Skip to content

Commit

Permalink
Merge pull request #2678 from Opetushallitus/tor-1959-vst-kaliuudistu…
Browse files Browse the repository at this point in the history
…s-vaihe-4

TOR-1959: VST-käliuudistus, vaihe 4
  • Loading branch information
ilkkahanninen authored Oct 30, 2023
2 parents a3367b2 + 3af01b6 commit 23e0beb
Show file tree
Hide file tree
Showing 65 changed files with 4,747 additions and 1,741 deletions.
2 changes: 1 addition & 1 deletion docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ services:
ports:
- "9200:9200"
volumes:
- "./opensearch/opensearch-docker.yml:/usr/share/opensearch/config/opensearch.yml:ro"
- "./opensearch/opensearch-docker.yml:/usr/share/opensearch/config/opensearch.yml"

dynamodb:
image: "amazon/dynamodb-local@sha256:f02384481c5133136cfd7edc82c6aed431e85a27bf5886fd637b889bdc0af6d5"
Expand Down
2 changes: 1 addition & 1 deletion opensearch/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
FROM opensearchproject/opensearch:1.2.4
FROM opensearchproject/opensearch:2.10.0

RUN bin/opensearch-plugin install --batch analysis-icu
24 changes: 24 additions & 0 deletions opensearch/opensearch-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,27 @@ http.host: 0.0.0.0

indices.query.bool.max_clause_count: 16384
bootstrap.system_call_filter: false

######## Start OpenSearch Security Demo Configuration ########
# WARNING: revise all the lines below before you go into production
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
- CN=kirk,OU=client,O=client,L=test, C=de

plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opendistro-notifications-*", ".opendistro-notebooks", ".opensearch-observability", ".opendistro-asynchronous-search-response*", ".replication-metadata-store"]
node.max_local_storage_nodes: 3
######## End OpenSearch Security Demo Configuration ########
48 changes: 46 additions & 2 deletions src/main/resources/localization/koski-default-texts.json
Original file line number Diff line number Diff line change
Expand Up @@ -2311,7 +2311,6 @@
"Tiedot oppilaitoksesta, jossa opiskeluoikeutesi on": "Tiedot oppilaitoksesta, jossa opiskeluoikeutesi on",
"Tiedustelu opintopolun tiedoista": "Tiedustelu Opintopolun tiedoista",
"Tietoa KOSKI-palvelun pyytämistä henkilötiedoista": "Tietoa KOSKI-palvelun pyytämistä henkilötiedoista",
"Tietoa KOSKI-palvelun pyytämistä henkilötiedoista
": "Tietoa KOSKI-palvelun pyytämistä henkilötiedoista
",
"Tietoja käytetään opiskelijahintaisten matkalippujen myöntämiseen.": "Tietoja käytetään matkalippujen opiskelija-alennuksen myöntämiseen.",
"Tietojani käyttäneet toimijat": "Tietojani käyttäneet toimijat",
"Tietojen hakeminen epäonnistui": "Tietojen hakeminen epäonnistui",
Expand Down Expand Up @@ -2559,6 +2558,7 @@
"validation:mustBeAtMost": "Arvon pitää olla enintään {{limit}}",
"validation:mustBeGreater": "Arvon pitää olla enemmän kuin {{limit}}",
"validation:mustBeLesser": "Arvon pitää olla vähemmän kuin {{error}}",
"validation:noMatchingValue": "Arvo '{{actual}}' ei ole sallittu. Sallitut arvot: {{expected}}",
"validation:other": "Odottamaton virhe, ota yhteyttä KOSKI-tiimiin (lisätiedot: {{details}}",
"Validointi": "Validointi",
"valinnainen": "valinnainen",
Expand Down Expand Up @@ -2651,5 +2651,49 @@
"Yritä uudestaan": "Yritä uudestaan",
"Yritys": "Yritys",
"Yths maksettu": "Yths maksettu",
"Y-tunnus": "Y-tunnus"
"Y-tunnus": "Y-tunnus",
"yotodistus-error: koski error": "Tapahtui odottamaton tekninen ongelma. Jos ongelma jatkuu, ota yhteyttä KOSKI-tiimiin osoitteeseen koski@opintopolku.fi",
"Todistuksen kieli": "Todistuksen kieli",
"Lataa todistus": "Lataa todistus",
"Ladataan todistusta...": "Ladataan todistusta...",
"Näytä todistus": "Näytä todistus",
"Tiedot koneluettavassa muodossa": "Tiedot koneluettavassa muodossa",
"deprecated:Käytä IB-oppiaineen suorituksen predictedArviointi-kenttää": "Käytä IB-oppiaineen suorituksen predictedArviointi-kenttää",
"deprecated:Effort-arvosanaa ei enää tallenneta KOSKI-tietovarantoon": "Effort-arvosanaa ei enää tallenneta KOSKI-tietovarantoon",
"Predicted arviointi": "Predicted grade",
"Predicted grade": "Predicted grade",
"Päättöarvosana": "Päättöarvosana",
"description:Tiedot aiemmin suoritetusta kokeesta, joka...": "Tiedot aiemmin suoritetusta kokeesta, joka on sisällytetty uuteen ylioppilastutkintoon",
"Aiemmin suoritetut kokeet": "Aiemmin suoritetut kokeet",
"Suoritetut tutkinnot": "Suoritetut tutkinnot",
"Aktiiviset ja päättyneet opinnot": "Aktiiviset ja päättyneet opinnot",
"Tässä listataan suoritetut tutkinnot otsikkotasolla. Tarkemmat tiedot löytyvät koneluettavassa muodossa yllä olevasta linkistä": "Tässä listataan suoritetut tutkinnot otsikkotasolla. Tarkemmat tiedot löytyvät koneluettavassa muodossa yllä olevasta linkistä.",
"Tässä listataan aktiiviset ja päättyneet opinnot otsikkotasolla. Tarkemmat tiedot löytyvät koneluettavassa muodossa yllä olevasta linkistä": "Tässä listataan aktiiviset ja päättyneet opinnot otsikkotasolla. Tarkemmat tiedot löytyvät koneluettavassa muodossa yllä olevasta linkistä.",
"Suoritettuja tutkintoja ei löytynyt": "Suoritettuja tutkintoja ei löytynyt.",
"Aktiivisia tai päättyneitä opintoja ei löytynyt": "Aktiivisia tai päättyneitä opintoja ei löytynyt.",
"Tietojen hakeminen epäonnistui": "Tietojen hakeminen epäonnistui",
"Voit valita jaettavaksi yksittäisiä tutkintoja tai vaihtoehtoisesti esimääriteltyjä kokonaisuuksia.": "Voit valita jaettavaksi yksittäisiä tutkintoja tai vaihtoehtoisesti esimääriteltyjä kokonaisuuksia.",
"Kattavat tiedot valituista suorituksista": "Kattavat tiedot valituista suorituksista",
"Jaa perustiedot kaikista suoritetuista tutkinnoista": "Jaa perustiedot kaikista suoritetuista tutkinnoista.",
"Jaa perustiedot kaikista aktiivisista ja päättyneistä opinnoista": "Jaa perustiedot kaikista aktiivisista ja päättyneistä opinnoista.",
"Jaa kattavat tiedot valitsemistasi suorituksista": "Jaa kattavat tiedot valitsemistasi suorituksista.",
"Oppilaitos tai koulutustoimija ei tiedossa": "Oppilaitos tai koulutustoimija ei tiedossa",
"Kotoutumiskoulutus oppivelvollisille": "Kotoutumiskoulutus oppivelvollisille",
"lisatiedot:nayta_lisatiedot": "Näytä lisätiedot",
"lisatiedot:sulje_lisatiedot": "Sulje lisätiedot",
"lisatiedot:lisaa_uusi": "Lisää uusi",
"toimipiste:hae_oppilaitosta_tai_toimipistetta": "Hae oppilaitosta tai toimipistettä",
"toimipiste:oppilaitos_tai_toimipiste": "Oppilaitos tai toimipiste",
"toimipiste:ei_hakutuloksia": "Ei hakutuloksia.",
"Vapaan sivistystyön koulutus": "Vapaan sivistystyön koulutus",
"Kansanopistojen vapaan sivistystyön koulutus oppivelvollisille": "Kansanopistojen vapaan sivistystyön koulutus oppivelvollisille",
"Lisää uusi": "Lisää uusi",
"Lisää valinnaiset": "Lisää valinnaiset",
"Lukutaitokoulutus oppivelvollisille": "Lukutaitokoulutus oppivelvollisille",
"Työelämäjakson nimi": "Työelämäjakson nimi",
"Lisää kotoutumiskoulutuksen ohjauksen osa-alue": "Lisää kotoutumiskoulutuksen ohjauksen osa-alue",
"Lisää valinnaisten opintojen osa-alue": "Lisää valinnaisten opintojen osa-alue",
"Lisää työelämän ja yhteiskuntataitojen opintojen osa-alue": "Lisää työelämän ja yhteiskuntataitojen opintojen osa-alue",
"Lisää suomen/ruotsin kielen ja viestintätaitojen osa-alue": "Lisää suomen/ruotsin kielen ja viestintätaitojen osa-alue",
"Näkymää ei saada ladattua. Yritä hetken päästä uudelleen.": "Näkymää ei saada ladattua. Yritä hetken päästä uudelleen."
}
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,16 @@ object ExamplesVapaaSivistystyöJotpa {

lazy val osasuoritus1: VapaanSivistystyönJotpaKoulutuksenOsasuorituksenSuoritus = VapaanSivistystyönJotpaKoulutuksenOsasuorituksenSuoritus(
koulutusmoduuli = Koulutusmoduuli.kurssi1,
arviointi = Some(List(VapaanSivistystyöJotpaKoulutuksenArviointi(
arvosana = Koodistokoodiviite("9", "arviointiasteikkovstjotpa"),
päivä = LocalDate.of(2023, 2, 1)
)))
arviointi = Some(List(
VapaanSivistystyöJotpaKoulutuksenArviointi(
arvosana = Koodistokoodiviite("9", "arviointiasteikkovstjotpa"),
päivä = LocalDate.of(2023, 2, 1)
),
VapaanSivistystyöJotpaKoulutuksenArviointi(
arvosana = Koodistokoodiviite("Hylätty", "arviointiasteikkovst"),
päivä = LocalDate.of(2023, 1, 1)
),
))
)

lazy val osasuoritus2: VapaanSivistystyönJotpaKoulutuksenOsasuorituksenSuoritus = VapaanSivistystyönJotpaKoulutuksenOsasuorituksenSuoritus(
Expand Down
6 changes: 6 additions & 0 deletions src/main/scala/fi/oph/koski/oppija/OppijaServlet.scala
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,12 @@ class OppijaServlet(implicit val application: KoskiApplication)
}.flatMap(_.warningsToLeft))
}

get("/:oid/uiv2") {
renderEither[Oppija](HenkilöOid.validateHenkilöOid(params("oid")).right.flatMap { oid =>
application.oppijaFacade.findOppija(oid, useVirta = false, useYtr = false)(session)
}.flatMap(_.warningsToLeft))
}

get("/:oid/ytr-json") {
if (!onOikeusNähdäYtrJson) {
haltWithStatus(KoskiErrorCategory.forbidden.kiellettyKäyttöoikeus())
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
{
"henkilö" : {
"hetu" : "030200A005P",
"etunimet" : "Keskiö",
"kutsumanimi" : "Keskiö",
"sukunimi" : "Jotpanen"
},
"opiskeluoikeudet" : [ {
"oppilaitos" : {
"oid" : "1.2.246.562.10.31915273374",
"oppilaitosnumero" : {
"koodiarvo" : "01694",
"koodistoUri" : "oppilaitosnumero"
},
"nimi" : {
"fi" : "Varsinais-Suomen kansanopisto"
}
},
"tila" : {
"opiskeluoikeusjaksot" : [ {
"alku" : "2023-01-01",
"tila" : {
"koodiarvo" : "lasna",
"nimi" : {
"fi" : "Läsnä"
},
"koodistoUri" : "koskiopiskeluoikeudentila",
"koodistoVersio" : 1
},
"opintojenRahoitus" : {
"koodiarvo" : "14",
"koodistoUri" : "opintojenrahoitus"
}
} ]
},
"suoritukset" : [ {
"toimipiste" : {
"oid" : "1.2.246.562.10.78513447389"
},
"tyyppi" : {
"koodiarvo" : "vstjotpakoulutus",
"koodistoUri" : "suorituksentyyppi"
},
"koulutusmoduuli" : {
"tunniste" : {
"koodiarvo" : "099999",
"koodistoUri" : "koulutus"
},
"opintokokonaisuus" : {
"koodiarvo" : "1138",
"nimi" : {
"fi" : "Kuvallisen ilmaisun perusteet ja välineet"
},
"koodistoUri" : "opintokokonaisuudet",
"koodistoVersio" : 1
}
},
"suorituskieli" : {
"koodiarvo" : "FI",
"koodistoUri" : "kieli"
},
"osasuoritukset" : [ {
"koulutusmoduuli" : {
"tunniste" : {
"koodiarvo" : "1138-1",
"nimi" : {
"fi" : "Kuvantekemisen perusvälineistö"
}
},
"laajuus" : {
"arvo" : 1.0,
"yksikkö" : {
"koodiarvo" : "2",
"nimi" : {
"fi" : "opintopistettä",
"sv" : "studiepoäng",
"en" : "ECTS credits"
},
"lyhytNimi" : {
"fi" : "op",
"sv" : "sp",
"en" : "ECTS cr"
},
"koodistoUri" : "opintojenlaajuusyksikko"
}
}
},
"tyyppi" : {
"koodiarvo" : "vstjotpakoulutuksenosasuoritus",
"koodistoUri" : "suorituksentyyppi"
},
"arviointi" : [ {
"arvosana" : {
"koodiarvo" : "9",
"koodistoUri" : "arviointiasteikkovstjotpa"
},
"päivä" : "2023-02-01",
"hyväksytty" : false
}, {
"arvosana" : {
"koodiarvo" : "Hylätty",
"koodistoUri" : "arviointiasteikkovst"
},
"päivä" : "2023-01-01",
"hyväksytty" : false
} ]
}, {
"koulutusmoduuli" : {
"tunniste" : {
"koodiarvo" : "1138-2",
"nimi" : {
"fi" : "Kuvallisen viestinnän perusteet"
}
},
"laajuus" : {
"arvo" : 1.0,
"yksikkö" : {
"koodiarvo" : "2",
"nimi" : {
"fi" : "opintopistettä",
"sv" : "studiepoäng",
"en" : "ECTS credits"
},
"lyhytNimi" : {
"fi" : "op",
"sv" : "sp",
"en" : "ECTS cr"
},
"koodistoUri" : "opintojenlaajuusyksikko"
}
}
},
"tyyppi" : {
"koodiarvo" : "vstjotpakoulutuksenosasuoritus",
"koodistoUri" : "suorituksentyyppi"
},
"arviointi" : [ {
"arvosana" : {
"koodiarvo" : "Hyväksytty",
"koodistoUri" : "arviointiasteikkovst"
},
"päivä" : "2023-03-01",
"hyväksytty" : true
} ]
}, {
"koulutusmoduuli" : {
"tunniste" : {
"koodiarvo" : "1138-3",
"nimi" : {
"fi" : "Tussitekniikat I ja II"
}
},
"laajuus" : {
"arvo" : 1.0,
"yksikkö" : {
"koodiarvo" : "2",
"nimi" : {
"fi" : "opintopistettä",
"sv" : "studiepoäng",
"en" : "ECTS credits"
},
"lyhytNimi" : {
"fi" : "op",
"sv" : "sp",
"en" : "ECTS cr"
},
"koodistoUri" : "opintojenlaajuusyksikko"
}
}
},
"tyyppi" : {
"koodiarvo" : "vstjotpakoulutuksenosasuoritus",
"koodistoUri" : "suorituksentyyppi"
}
} ]
} ],
"tyyppi" : {
"koodiarvo" : "vapaansivistystyonkoulutus",
"koodistoUri" : "opiskeluoikeudentyyppi"
},
"alkamispäivä" : "2023-01-01"
} ]
}
22 changes: 15 additions & 7 deletions web/app/appstate/VirkailijaAppStateProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ import { ConstraintsProvider } from './constraints'
import { GlobalErrorProvider } from './globalErrors'
import { KoodistoProvider } from './koodisto'
import { OrganisaatioHierarkiaProvider } from './organisaatioHierarkia'
import { PerusteProvider } from './peruste'
import { PreferencesProvider } from './preferences'
import { UserProvider } from './user'
import { OpiskeluoikeusProvider } from './opiskeluoikeus'

export type AppStateProviderProps = React.PropsWithChildren<{
user: UserWithAccessRights
Expand All @@ -16,13 +18,19 @@ export const VirkailijaAppStateProvider: React.FC<AppStateProviderProps> = (
) => (
<GlobalErrorProvider>
<UserProvider user={props.user} isKansalainen={false}>
<KoodistoProvider>
<OrganisaatioHierarkiaProvider>
<PreferencesProvider>
<ConstraintsProvider>{props.children}</ConstraintsProvider>
</PreferencesProvider>
</OrganisaatioHierarkiaProvider>
</KoodistoProvider>
<PerusteProvider>
<KoodistoProvider>
<OrganisaatioHierarkiaProvider>
<PreferencesProvider>
<ConstraintsProvider>
<OpiskeluoikeusProvider>
{props.children}
</OpiskeluoikeusProvider>
</ConstraintsProvider>
</PreferencesProvider>
</OrganisaatioHierarkiaProvider>
</KoodistoProvider>
</PerusteProvider>
</UserProvider>
</GlobalErrorProvider>
)
4 changes: 1 addition & 3 deletions web/app/appstate/constraints.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,7 @@ const ConstraintsContext = React.createContext<ConstraintsContextValue>({
loadConstraint: () => {}
})

export type ConstraintsProviderProps = {
children: React.ReactNode
}
export type ConstraintsProviderProps = React.PropsWithChildren

class ConstraintsLoader {
constraints: ConstraintsRecord = {}
Expand Down
Loading

0 comments on commit 23e0beb

Please sign in to comment.