From a4bf268e882ba6ce9ee05036e28bfb43874fd28c Mon Sep 17 00:00:00 2001 From: Sindre Larsen Date: Wed, 20 Nov 2024 17:10:41 +0100 Subject: [PATCH] =?UTF-8?q?script=20for=20=C3=A5=20generere=20nytt=20sql?= =?UTF-8?q?=5Fscript=20for=20nytt=20tema=20v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + .../README.md" | 11 + .../main/__init__.py" | 0 .../dataklasser/Sp\303\270rsm\303\245l.py" | 14 + .../main/dataklasser/Svaralternativ.py" | 11 + .../main/dataklasser/Tema.py" | 11 + .../main/dataklasser/__init__.py" | 0 .../main/utforsking.ipynb" | 267 ++++++++++++++++++ .../main/util/__init__.py" | 0 .../main/util/generer_uuider.py" | 16 ++ .../main/util/gj\303\270r_tema_inaktivt.py" | 11 + .../main/util/sql_eksport.py" | 38 +++ .../requirements.txt" | 99 +++++++ .../test/__init__.py" | 0 .../test/test_generer_uuider.py" | 17 ++ .../test/test_gj\303\270r_tema_inaktivt.py" | 12 + 16 files changed, 509 insertions(+) create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/README.md" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/main/__init__.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Sp\303\270rsm\303\245l.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Svaralternativ.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Tema.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/__init__.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/main/utforsking.ipynb" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/main/util/__init__.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/main/util/generer_uuider.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/main/util/gj\303\270r_tema_inaktivt.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/main/util/sql_eksport.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/requirements.txt" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/test/__init__.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/test/test_generer_uuider.py" create mode 100644 "scripts/sp\303\270rreunders\303\270kelse/test/test_gj\303\270r_tema_inaktivt.py" diff --git a/.gitignore b/.gitignore index 682524db..ee5690e7 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,5 @@ build # DS_Store for mac .DS_Store +/scripts/spørreundersøkelse/env/ +/scripts/spørreundersøkelse/.vscode/ diff --git "a/scripts/sp\303\270rreunders\303\270kelse/README.md" "b/scripts/sp\303\270rreunders\303\270kelse/README.md" new file mode 100644 index 00000000..3488cdf1 --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/README.md" @@ -0,0 +1,11 @@ + +# Lage virtuelt miljø +`python3.12 -m venv env` + +`source env/bin/activate` + +# Installere avhengigheter +`pip3 install -r requirements.txt` + +# For å kjøre tester +`pytest` \ No newline at end of file diff --git "a/scripts/sp\303\270rreunders\303\270kelse/main/__init__.py" "b/scripts/sp\303\270rreunders\303\270kelse/main/__init__.py" new file mode 100644 index 00000000..e69de29b diff --git "a/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Sp\303\270rsm\303\245l.py" "b/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Sp\303\270rsm\303\245l.py" new file mode 100644 index 00000000..1b43ce42 --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Sp\303\270rsm\303\245l.py" @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Annotated +from pydantic import BaseModel, StringConstraints +from util.generer_uuider import generer_uuid_med_delay +from dataklasser.Svaralternativ import Svaralternativ + + +class Spørsmål(BaseModel): + id: Annotated[str, StringConstraints(min_length=36, max_length=36)] = ( + generer_uuid_med_delay() + ) + tekst: str + flervalg: bool = False + svaralternativer: list[Svaralternativ] diff --git "a/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Svaralternativ.py" "b/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Svaralternativ.py" new file mode 100644 index 00000000..f21c8ef2 --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Svaralternativ.py" @@ -0,0 +1,11 @@ +from pydantic import BaseModel +from typing import Annotated +from pydantic import BaseModel, StringConstraints +from util.generer_uuider import generer_uuid_med_delay + + +class Svaralternativ(BaseModel): + id: Annotated[str, StringConstraints(min_length=36, max_length=36)] = ( + generer_uuid_med_delay() + ) + tekst: str diff --git "a/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Tema.py" "b/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Tema.py" new file mode 100644 index 00000000..812912ad --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/Tema.py" @@ -0,0 +1,11 @@ +from typing import Literal +from pydantic import BaseModel +from dataklasser.Spørsmål import Spørsmål + + +class Tema(BaseModel): + id: int + navn: Literal["Partssamarbeid", "Sykefraværsarbeid", "Arbeidsmiljø"] + rekkefølge: int + type: Literal["Behovsvurdering", "Evaluering"] + spørsmål: list[Spørsmål] diff --git "a/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/__init__.py" "b/scripts/sp\303\270rreunders\303\270kelse/main/dataklasser/__init__.py" new file mode 100644 index 00000000..e69de29b diff --git "a/scripts/sp\303\270rreunders\303\270kelse/main/utforsking.ipynb" "b/scripts/sp\303\270rreunders\303\270kelse/main/utforsking.ipynb" new file mode 100644 index 00000000..106d08cd --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/main/utforsking.ipynb" @@ -0,0 +1,267 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from util.gjør_tema_inaktivt import gjør_tema_inaktivt\n", + "from util.generer_uuider import generer_uuider, generer_uuid_med_delay\n", + "from dataklasser.Tema import Tema\n", + "from dataklasser.Spørsmål import Spørsmål\n", + "from dataklasser.Svaralternativ import Svaralternativ\n", + "from util.sql_eksport import (\n", + " nytt_tema,\n", + " nytt_spørsmål,\n", + " nytt_svaralternativ,\n", + " knytt_spørsmål_til_tema,\n", + ")\n", + "\n", + "\n", + "# # TODO: viktig at svaralternativ med samme tekst ikke får samme id\n", + "# TODO: Gitt et SQL script sin output som json/csv eller noe, gi ut alle spørsmål som basemodel klasser (kun aktive og rett type)\n", + "# -> gi kode for å flytte spørsmål\n", + "\n", + "HELT_ENIG = \"Helt enig\"\n", + "LITT_ENIG = \"Litt enig\"\n", + "LITT_UENIG = \"Litt uenig\"\n", + "HELT_UENIG = \"Helt uenig\"\n", + "\n", + "\n", + "SVÆRT_GODT = \"Svært godt\"\n", + "GODT = \"Godt\"\n", + "DÅRLIG = \"Dårlig\"\n", + "SVÆRT_DÅRLIG = \"Svært dårlig\"\n", + "\n", + "VET_IKKE = \"Vet ikke\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "tema_som_skal_gjøres_inaktivt = 12\n", + "første_tilgjengelige_id = 15\n", + "\n", + "tema = Tema(\n", + " id=første_tilgjengelige_id,\n", + " navn=\"Arbeidsmiljø\",\n", + " rekkefølge=3,\n", + " type=\"Behovsvurdering\",\n", + " spørsmål=[\n", + " Spørsmål(\n", + " tekst=\"Hvordan opplever du at partssamarbeidet har utviklet seg i løpet av samarbeidsperioden?\",\n", + " svaralternativer=[\n", + " Svaralternativ(tekst=SVÆRT_GODT),\n", + " Svaralternativ(tekst=GODT),\n", + " Svaralternativ(tekst=DÅRLIG),\n", + " Svaralternativ(tekst=SVÆRT_DÅRLIG),\n", + " Svaralternativ(tekst=VET_IKKE),\n", + " ],\n", + " ),\n", + " Spørsmål(\n", + " tekst=\"Som leder, tillitsvalgt eller verneombud har jeg fått en bedre forståelse av min rolle og mine ansvarsområder i partssamarbeidet \",\n", + " svaralternativer=[\n", + " Svaralternativ(tekst=HELT_ENIG),\n", + " Svaralternativ(tekst=LITT_ENIG),\n", + " Svaralternativ(tekst=LITT_UENIG),\n", + " Svaralternativ(tekst=HELT_UENIG),\n", + " Svaralternativ(tekst=VET_IKKE),\n", + " ],\n", + " ),\n", + " Spørsmål(\n", + " tekst=\"Vi har opparbeidet oss nødvendig kompetanse for å forebygge og håndtere sykefraværet vårt\",\n", + " svaralternativer=[\n", + " Svaralternativ(tekst=HELT_ENIG),\n", + " Svaralternativ(tekst=LITT_ENIG),\n", + " Svaralternativ(tekst=LITT_UENIG),\n", + " Svaralternativ(tekst=HELT_UENIG),\n", + " Svaralternativ(tekst=VET_IKKE),\n", + " ],\n", + " ),\n", + " Spørsmål(\n", + " tekst=\"Vi har laget konkrete planer for hvordan vi i partssamarbeidet skal jobbe fremover\",\n", + " svaralternativer=[\n", + " Svaralternativ(tekst=HELT_ENIG),\n", + " Svaralternativ(tekst=LITT_ENIG),\n", + " Svaralternativ(tekst=LITT_UENIG),\n", + " Svaralternativ(tekst=HELT_UENIG),\n", + " Svaralternativ(tekst=VET_IKKE),\n", + " ],\n", + " ),\n", + " Spørsmål(\n", + " tekst=\"Jeg opplever at vi er motiverte for å samarbeide videre om sykefravær og arbeidsmiljø\",\n", + " svaralternativer=[\n", + " Svaralternativ(tekst=HELT_ENIG),\n", + " Svaralternativ(tekst=LITT_ENIG),\n", + " Svaralternativ(tekst=LITT_UENIG),\n", + " Svaralternativ(tekst=HELT_UENIG),\n", + " Svaralternativ(tekst=VET_IKKE),\n", + " ],\n", + " ),\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "UPDATE ia_sak_kartlegging_tema\n", + "SET status = 'INAKTIV'\n", + "WHERE tema_id = 12;\n", + "\n", + "INSERT INTO ia_sak_kartlegging_tema (tema_id, navn, status, rekkefolge, type)\n", + "VALUES (15, 'Arbeidsmiljø', 'AKTIV', 3, 'Behovsvurdering)';\n", + "\n", + "INSERT INTO ia_sak_kartlegging_sporsmal (sporsmal_id, sporsmal_tekst, flervalg)\n", + "VALUES ('0673e06d-5adb-7a3c-8000-cc88d2b283f2','Hvordan opplever du at partssamarbeidet har utviklet seg i løpet av samarbeidsperioden?',false);\n", + "\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Svært godt');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Godt');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Dårlig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Svært dårlig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Vet ikke');\n", + "\n", + "\n", + "INSERT INTO ia_sak_kartlegging_tema_til_spørsmål (tema_id, sporsmal_id)\n", + "VALUES (15, '0673e06d-5adb-7a3c-8000-cc88d2b283f2');INSERT INTO ia_sak_kartlegging_sporsmal (sporsmal_id, sporsmal_tekst, flervalg)\n", + "VALUES ('0673e06d-5adb-7a3c-8000-cc88d2b283f2','Som leder, tillitsvalgt eller verneombud har jeg fått en bedre forståelse av min rolle og mine ansvarsområder i partssamarbeidet',false);\n", + "\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Helt enig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Litt enig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Litt uenig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Helt uenig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Vet ikke');\n", + "\n", + "\n", + "INSERT INTO ia_sak_kartlegging_tema_til_spørsmål (tema_id, sporsmal_id)\n", + "VALUES (15, '0673e06d-5adb-7a3c-8000-cc88d2b283f2');INSERT INTO ia_sak_kartlegging_sporsmal (sporsmal_id, sporsmal_tekst, flervalg)\n", + "VALUES ('0673e06d-5adb-7a3c-8000-cc88d2b283f2','Vi har opparbeidet oss nødvendig kompetanse for å forebygge og håndtere sykefraværet vårt',false);\n", + "\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Helt enig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Litt enig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Litt uenig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Helt uenig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Vet ikke');\n", + "\n", + "\n", + "INSERT INTO ia_sak_kartlegging_tema_til_spørsmål (tema_id, sporsmal_id)\n", + "VALUES (15, '0673e06d-5adb-7a3c-8000-cc88d2b283f2');INSERT INTO ia_sak_kartlegging_sporsmal (sporsmal_id, sporsmal_tekst, flervalg)\n", + "VALUES ('0673e06d-5adb-7a3c-8000-cc88d2b283f2','Vi har laget konkrete planer for hvordan vi i partssamarbeidet skal jobbe fremover',false);\n", + "\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Helt enig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Litt enig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Litt uenig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Helt uenig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Vet ikke');\n", + "\n", + "\n", + "INSERT INTO ia_sak_kartlegging_tema_til_spørsmål (tema_id, sporsmal_id)\n", + "VALUES (15, '0673e06d-5adb-7a3c-8000-cc88d2b283f2');INSERT INTO ia_sak_kartlegging_sporsmal (sporsmal_id, sporsmal_tekst, flervalg)\n", + "VALUES ('0673e06d-5adb-7a3c-8000-cc88d2b283f2','Jeg opplever at vi er motiverte for å samarbeide videre om sykefravær og arbeidsmiljø',false);\n", + "\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Helt enig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Litt enig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Litt uenig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Helt uenig');\n", + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)\n", + "VALUES ('0673e06d-5a6d-7267-8000-818a44041a56', '0673e06d-5adb-7a3c-8000-cc88d2b283f2', 'Vet ikke');\n", + "\n", + "\n", + "INSERT INTO ia_sak_kartlegging_tema_til_spørsmål (tema_id, sporsmal_id)\n", + "VALUES (15, '0673e06d-5adb-7a3c-8000-cc88d2b283f2');\n" + ] + } + ], + "source": [ + "def nytt_tema_med_spørsmål_og_svaralternativer(tema: Tema) -> str:\n", + " output = \"\"\n", + "\n", + " output += nytt_tema(tema)\n", + " output += \"\\n\"\n", + " output += \"\\n\"\n", + "\n", + " for spørsmål in tema.spørsmål:\n", + " output += nytt_spørsmål(spørsmål)\n", + " output += \"\\n\"\n", + " output += \"\\n\"\n", + "\n", + " for svaralternativ in spørsmål.svaralternativer:\n", + " output += nytt_svaralternativ(\n", + " svaralternativ=svaralternativ, spørsmål=spørsmål\n", + " )\n", + " output += \"\\n\"\n", + "\n", + " output += \"\\n\"\n", + " output += \"\\n\"\n", + "\n", + " output += knytt_spørsmål_til_tema(spørsmål=spørsmål, tema=tema)\n", + "\n", + " return output\n", + "\n", + "\n", + "sql_script = \"\"\n", + "sql_script += gjør_tema_inaktivt(temaId=12)\n", + "sql_script += \"\\n\"\n", + "sql_script += \"\\n\"\n", + "sql_script += nytt_tema_med_spørsmål_og_svaralternativer(tema)\n", + "\n", + "print(sql_script)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/scripts/sp\303\270rreunders\303\270kelse/main/util/__init__.py" "b/scripts/sp\303\270rreunders\303\270kelse/main/util/__init__.py" new file mode 100644 index 00000000..e69de29b diff --git "a/scripts/sp\303\270rreunders\303\270kelse/main/util/generer_uuider.py" "b/scripts/sp\303\270rreunders\303\270kelse/main/util/generer_uuider.py" new file mode 100644 index 00000000..89825c94 --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/main/util/generer_uuider.py" @@ -0,0 +1,16 @@ +from uuid_extensions import uuid7 +from time import sleep + + +def generer_uuider(antall: int) -> list[str]: + list = [] + for i in range(antall): + uuid = generer_uuid_med_delay() + list.append(uuid) + + return list + + +def generer_uuid_med_delay() -> str: + sleep(0.001) + return uuid7(as_type="str") diff --git "a/scripts/sp\303\270rreunders\303\270kelse/main/util/gj\303\270r_tema_inaktivt.py" "b/scripts/sp\303\270rreunders\303\270kelse/main/util/gj\303\270r_tema_inaktivt.py" new file mode 100644 index 00000000..8e288e34 --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/main/util/gj\303\270r_tema_inaktivt.py" @@ -0,0 +1,11 @@ +def gjør_tema_inaktivt(temaId: int): + sql_fil = ( + "UPDATE ia_sak_kartlegging_tema" + + "\n" + + "SET status = 'INAKTIV'" + + "\n" + + "WHERE tema_id = " + + str(temaId) + + ";" + ) + return sql_fil diff --git "a/scripts/sp\303\270rreunders\303\270kelse/main/util/sql_eksport.py" "b/scripts/sp\303\270rreunders\303\270kelse/main/util/sql_eksport.py" new file mode 100644 index 00000000..b20b09d7 --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/main/util/sql_eksport.py" @@ -0,0 +1,38 @@ +from dataklasser.Tema import Tema +from dataklasser.Spørsmål import Spørsmål +from dataklasser.Svaralternativ import Svaralternativ + + +def nytt_tema(tema: Tema): + return ( + "INSERT INTO ia_sak_kartlegging_tema (tema_id, navn, status, rekkefolge, type)" + + "\n" + + f"VALUES ({tema.id}, '{tema.navn}', 'AKTIV', {tema.rekkefølge}, '{tema.type})';" + ) + + +def nytt_svaralternativ( + svaralternativ: Svaralternativ, + spørsmål: Spørsmål, +): + return ( + "INSERT INTO ia_sak_kartlegging_svaralternativer (svaralternativ_id, sporsmal_id, svaralternativ_tekst)" + + "\n" + + f"VALUES ('{svaralternativ.id}', '{spørsmål.id}', '{svaralternativ.tekst}');" + ) + + +def nytt_spørsmål(spørsmål: Spørsmål): + return ( + "INSERT INTO ia_sak_kartlegging_sporsmal (sporsmal_id, sporsmal_tekst, flervalg)" + + "\n" + + f"VALUES ('{spørsmål.id}','{spørsmål.tekst.strip()}',{str(spørsmål.flervalg).lower()});" + ) + + +def knytt_spørsmål_til_tema(spørsmål: Spørsmål, tema: Tema): + return ( + "INSERT INTO ia_sak_kartlegging_tema_til_spørsmål (tema_id, sporsmal_id)" + + "\n" + + f"VALUES ({tema.id}, '{spørsmål.id}');" + ) diff --git "a/scripts/sp\303\270rreunders\303\270kelse/requirements.txt" "b/scripts/sp\303\270rreunders\303\270kelse/requirements.txt" new file mode 100644 index 00000000..a4f85a13 --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/requirements.txt" @@ -0,0 +1,99 @@ +annotated-types==0.7.0 +anyio==4.6.2.post1 +appnope==0.1.4 +argon2-cffi==23.1.0 +argon2-cffi-bindings==21.2.0 +arrow==1.3.0 +asttokens==2.4.1 +async-lru==2.0.4 +attrs==24.2.0 +babel==2.16.0 +beautifulsoup4==4.12.3 +bleach==6.2.0 +certifi==2024.8.30 +cffi==1.17.1 +charset-normalizer==3.4.0 +comm==0.2.2 +debugpy==1.8.8 +decorator==5.1.1 +defusedxml==0.7.1 +executing==2.1.0 +fastjsonschema==2.20.0 +fqdn==1.5.1 +h11==0.14.0 +httpcore==1.0.7 +httpx==0.27.2 +idna==3.10 +iniconfig==2.0.0 +ipykernel==6.29.5 +ipython==8.29.0 +isoduration==20.11.0 +jedi==0.19.2 +Jinja2==3.1.4 +json5==0.9.28 +jsonpointer==3.0.0 +jsonschema==4.23.0 +jsonschema-specifications==2024.10.1 +jupyter-events==0.10.0 +jupyter-lsp==2.2.5 +jupyter_client==8.6.3 +jupyter_core==5.7.2 +jupyter_server==2.14.2 +jupyter_server_terminals==0.5.3 +jupyterlab==4.2.6 +jupyterlab_pygments==0.3.0 +jupyterlab_server==2.27.3 +MarkupSafe==3.0.2 +matplotlib-inline==0.1.7 +mistune==3.0.2 +nbclient==0.10.0 +nbconvert==7.16.4 +nbformat==5.10.4 +nest-asyncio==1.6.0 +notebook==7.2.2 +notebook_shim==0.2.4 +overrides==7.7.0 +packaging==24.2 +pandocfilters==1.5.1 +parso==0.8.4 +pexpect==4.9.0 +platformdirs==4.3.6 +pluggy==1.5.0 +prometheus_client==0.21.0 +prompt_toolkit==3.0.48 +psutil==6.1.0 +ptyprocess==0.7.0 +pure_eval==0.2.3 +pycparser==2.22 +pydantic==2.9.2 +pydantic_core==2.23.4 +Pygments==2.18.0 +pytest==8.3.3 +python-dateutil==2.9.0.post0 +python-json-logger==2.0.7 +PyYAML==6.0.2 +pyzmq==26.2.0 +referencing==0.35.1 +requests==2.32.3 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rpds-py==0.21.0 +Send2Trash==1.8.3 +setuptools==75.5.0 +six==1.16.0 +sniffio==1.3.1 +soupsieve==2.6 +stack-data==0.6.3 +terminado==0.18.1 +tinycss2==1.4.0 +tornado==6.4.1 +traitlets==5.14.3 +types-python-dateutil==2.9.0.20241003 +typing_extensions==4.12.2 +uri-template==1.3.0 +urllib3==2.2.3 +uuid7==0.1.0 +wcwidth==0.2.13 +webcolors==24.11.1 +webencodings==0.5.1 +websocket-client==1.8.0 diff --git "a/scripts/sp\303\270rreunders\303\270kelse/test/__init__.py" "b/scripts/sp\303\270rreunders\303\270kelse/test/__init__.py" new file mode 100644 index 00000000..e69de29b diff --git "a/scripts/sp\303\270rreunders\303\270kelse/test/test_generer_uuider.py" "b/scripts/sp\303\270rreunders\303\270kelse/test/test_generer_uuider.py" new file mode 100644 index 00000000..6ff2d841 --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/test/test_generer_uuider.py" @@ -0,0 +1,17 @@ +from main.generer_uuider import generer_uuider + + +def test_generer_uuider(): + sortert_liste_med_uuider = generer_uuider(1000) + + for i in range(len(sortert_liste_med_uuider) - 1): + # sjekk at alle er i sortert rekkefølge + assert sortert_liste_med_uuider[i] < sortert_liste_med_uuider[i + 1] + + +def test_generer_uuider_første_13_tegn(): + sortert_liste_med_uuider = generer_uuider(1000) + + for i in range(len(sortert_liste_med_uuider) - 1): + # sjekk at alle er i sortert rekkefølge + assert sortert_liste_med_uuider[i][:13] < sortert_liste_med_uuider[i + 1][:13] diff --git "a/scripts/sp\303\270rreunders\303\270kelse/test/test_gj\303\270r_tema_inaktivt.py" "b/scripts/sp\303\270rreunders\303\270kelse/test/test_gj\303\270r_tema_inaktivt.py" new file mode 100644 index 00000000..6ec54974 --- /dev/null +++ "b/scripts/sp\303\270rreunders\303\270kelse/test/test_gj\303\270r_tema_inaktivt.py" @@ -0,0 +1,12 @@ +from main.gjør_tema_inaktivt import gjør_tema_inaktivt + + +def test_gjør_tema_inaktivt(): + assert ( + gjør_tema_inaktivt(1) + == "UPDATE ia_sak_kartlegging_tema" + + "\n" + + "SET status = 'INAKTIV'" + + "\n" + + "WHERE tema_id = 1;" + )