From 5b60e50ac4f4be04e122557c9ea71097c8f17624 Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Mon, 17 Jun 2024 15:50:35 +0200 Subject: [PATCH] wip: Rename fns, add filename translations --- server/config/urls.py | 4 +- server/locale/de/LC_MESSAGES/django.po | 60 ++++++++------ server/locale/fr/LC_MESSAGES/django.mo | Bin 2301 -> 2510 bytes server/locale/fr/LC_MESSAGES/django.po | 76 +++++++++++------- server/locale/it/LC_MESSAGES/django.mo | Bin 2191 -> 2420 bytes server/locale/it/LC_MESSAGES/django.po | 68 ++++++++++------ server/vbv_lernwelt/assignment/export.py | 6 +- .../commands/export_assignment_completions.py | 4 +- .../test_assignment_completions_export.py | 4 +- .../services/export_attendance.py | 6 +- server/vbv_lernwelt/dashboard/views.py | 28 ++++--- server/vbv_lernwelt/feedback/export.py | 4 +- 12 files changed, 162 insertions(+), 98 deletions(-) diff --git a/server/config/urls.py b/server/config/urls.py index 4748e663..51627cce 100644 --- a/server/config/urls.py +++ b/server/config/urls.py @@ -42,7 +42,7 @@ from vbv_lernwelt.course.views import ( from vbv_lernwelt.course_session.views import get_course_session_documents from vbv_lernwelt.dashboard.views import ( export_attendance_as_xsl, - export_competence_certificate_as_xsl, + export_competence_elements_as_xsl, export_feedback_as_xsl, get_dashboard_config, get_dashboard_due_dates, @@ -135,7 +135,7 @@ urlpatterns = [ path(r"api/dashboard/course//open_tasks/", get_mentor_open_tasks_count, name="get_mentor_open_tasks_count"), path(r"api/dashboard/export/attendance/", export_attendance_as_xsl, name="export_attendance_as_xsl"), - path(r"api/dashboard/export/certificate/", export_competence_certificate_as_xsl, name="export_certificate_as_xsl"), + path(r"api/dashboard/export/certificate/", export_competence_elements_as_xsl, name="export_certificate_as_xsl"), path(r"api/dashboard/export/feedback/", export_feedback_as_xsl, name="export_feedback_as_xsl"), # course diff --git a/server/locale/de/LC_MESSAGES/django.po b/server/locale/de/LC_MESSAGES/django.po index 115a551c..3db23658 100644 --- a/server/locale/de/LC_MESSAGES/django.po +++ b/server/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-17 08:25+0200\n" +"POT-Creation-Date: 2024-06-17 15:43+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,16 +18,20 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: vbv_lernwelt/assignment/export.py:181 +#: vbv_lernwelt/assignment/export.py:31 +msgid "export_kompetenznachweis_elemente" +msgstr "" + +#: vbv_lernwelt/assignment/export.py:183 msgid "Bestanden" msgstr "" -#: vbv_lernwelt/assignment/export.py:181 +#: vbv_lernwelt/assignment/export.py:185 msgid "Nicht bestanden" msgstr "" -#: vbv_lernwelt/assignment/export.py:195 vbv_lernwelt/assignment/export.py:198 -#: vbv_lernwelt/assignment/export.py:199 +#: vbv_lernwelt/assignment/export.py:199 vbv_lernwelt/assignment/export.py:202 +#: vbv_lernwelt/assignment/export.py:203 msgid "Keine Daten" msgstr "" @@ -103,81 +107,89 @@ msgstr "" msgid "ÜK-Lehrgang" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:111 +#: vbv_lernwelt/course_session/services/export_attendance.py:15 +msgid "export_anwesenheit" +msgstr "" + +#: vbv_lernwelt/course_session/services/export_attendance.py:113 msgid "Anwesend" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:111 +#: vbv_lernwelt/course_session/services/export_attendance.py:113 msgid "Nicht anwesend" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:118 +#: vbv_lernwelt/course_session/services/export_attendance.py:120 msgid "Vorname" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:119 +#: vbv_lernwelt/course_session/services/export_attendance.py:121 msgid "Nachname" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:120 +#: vbv_lernwelt/course_session/services/export_attendance.py:122 msgid "Email" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:121 -#: vbv_lernwelt/course_session/services/export_attendance.py:133 +#: vbv_lernwelt/course_session/services/export_attendance.py:123 +#: vbv_lernwelt/course_session/services/export_attendance.py:135 msgid "Lehrvertragsnummer" msgstr "" -#: vbv_lernwelt/feedback/export.py:33 +#: vbv_lernwelt/feedback/export.py:19 +msgid "export_feedback" +msgstr "" + +#: vbv_lernwelt/feedback/export.py:35 msgid "Zufriedenheit insgesamt" msgstr "" -#: vbv_lernwelt/feedback/export.py:34 +#: vbv_lernwelt/feedback/export.py:36 msgid "Zielerreichung insgesamt" msgstr "" -#: vbv_lernwelt/feedback/export.py:37 +#: vbv_lernwelt/feedback/export.py:39 msgid "" "Wie beurteilst du deine Sicherheit bezüglichen den Themen nach dem Kurs?" msgstr "" -#: vbv_lernwelt/feedback/export.py:41 +#: vbv_lernwelt/feedback/export.py:43 msgid "Waren die Vorbereitungsaufträge klar und verständlich?" msgstr "" -#: vbv_lernwelt/feedback/export.py:45 +#: vbv_lernwelt/feedback/export.py:48 msgid "" "Wie beurteilst du die Themensicherheit und Fachkompetenz des Kursleiters/der " "Kursleiterin?" msgstr "" -#: vbv_lernwelt/feedback/export.py:49 +#: vbv_lernwelt/feedback/export.py:54 msgid "" "Wurden Fragen und Anregungen der Kursteilnehmenden ernst genommen und " "aufgegriffen?" msgstr "" -#: vbv_lernwelt/feedback/export.py:53 +#: vbv_lernwelt/feedback/export.py:59 msgid "Was möchtest du dem Kursleiter/der Kursleiterin sonst noch sagen?" msgstr "" -#: vbv_lernwelt/feedback/export.py:55 +#: vbv_lernwelt/feedback/export.py:61 msgid "Würdest du den Kurs weiterempfehlen?" msgstr "" -#: vbv_lernwelt/feedback/export.py:56 +#: vbv_lernwelt/feedback/export.py:62 msgid "Was hat dir besonders gut gefallen?" msgstr "" -#: vbv_lernwelt/feedback/export.py:57 +#: vbv_lernwelt/feedback/export.py:63 msgid "Wo siehst du Verbesserungspotential?" msgstr "" -#: vbv_lernwelt/feedback/export.py:144 +#: vbv_lernwelt/feedback/export.py:150 msgid "Durchführung" msgstr "" -#: vbv_lernwelt/feedback/export.py:145 +#: vbv_lernwelt/feedback/export.py:151 msgid "Datum" msgstr "" diff --git a/server/locale/fr/LC_MESSAGES/django.mo b/server/locale/fr/LC_MESSAGES/django.mo index 5c10a8378da9bda52bcc4ae06a25c6dde22278e3..43c07650e89e0c7e53ad428649c6dfa12ffc78e3 100644 GIT binary patch delta 722 zcmZ9~IZFdU6u|LGT#fgUsPQU1BB|^xER4iLv5N?bvcxzNuiZ6SP*e!{0D=gyR}ew0 z3|a^_egFk4E3wehQai!_iyKfMy!>`HnVC0l^3`%5$~^~-f+9M}9`cnOBrkk?5Tkyj zsxgK&IEj@wjSV>Gjni1i*uo(0pv>FHMm)kMJjDQB;jmIUb<4v5FFtV$yDF5Lzy+Mc zGmN0$P%42@lmd6L1CKF`Hz*rFqHOerefWVf4ilzoDQLFpr+`H?*k7&kAeGxFC)-7- zIFJ2!;Ejt|&-e~yp$C+cJYgJPa0mx^IfDtD$8$_$fJx)%po7;KVSg2+uMwQWUfe`E z!J+2~b~C<2xfLn4m1Ms^K?6&{x~1Ufr2?C=oopfH%H)vch_&$~ZIh7yK!}vhe}}Z0 zTcBM(ossWqN$Ezo`0gwC<9ge%Gp?DmwscloX}#hq@71!_ON+_WT6w%?Z#df3){d1- trML7-*3|2ILtCyc=8ZjL#GB@1WTBKUPy4@&Hz{i_X)|S8ZpL2M>Kow}VI2Sf delta 526 zcmXxhy-R{o6vy%7<71hnrDir%^kPfl9zlcl0#Zvv1<}|85hPJVLxJGn9D)CWe?Sgx zO-)g55mYobHRNgpeSeocc<$%k%i}%wrIr3oRz6aG-G~u#jC>@=$;%K8@r_YzV;^=f zg1%=K#~5lniv2i&DV#(7ZwV8)hJ(0`y%^wvS;da&%rMcwB0gXV<6*Ns+{GN;;1<5% zEYABB#ZAoO5f<276;=42U8&F$GG))G4Zb2j`=m)w-@fQfGx6glI6;ru0OLGrp+(d} z%eaE;n8z#J!8_c?3?CihDX!uhp5PRV\n" "Language-Team: LANGUAGE \n" @@ -18,16 +18,20 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: vbv_lernwelt/assignment/export.py:181 +#: vbv_lernwelt/assignment/export.py:31 +msgid "export_kompetenznachweis_elemente" +msgstr "export_elements_de_controle" + +#: vbv_lernwelt/assignment/export.py:183 msgid "Bestanden" msgstr "Réussi" -#: vbv_lernwelt/assignment/export.py:181 +#: vbv_lernwelt/assignment/export.py:185 msgid "Nicht bestanden" msgstr "Échoué" -#: vbv_lernwelt/assignment/export.py:195 vbv_lernwelt/assignment/export.py:198 -#: vbv_lernwelt/assignment/export.py:199 +#: vbv_lernwelt/assignment/export.py:199 vbv_lernwelt/assignment/export.py:202 +#: vbv_lernwelt/assignment/export.py:203 msgid "Keine Daten" msgstr "Aucune donnée" @@ -103,81 +107,97 @@ msgstr "" msgid "ÜK-Lehrgang" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:111 +#: vbv_lernwelt/course_session/services/export_attendance.py:15 +msgid "export_anwesenheit" +msgstr "export_presence" + +#: vbv_lernwelt/course_session/services/export_attendance.py:113 msgid "Anwesend" msgstr "Présent" -#: vbv_lernwelt/course_session/services/export_attendance.py:111 +#: vbv_lernwelt/course_session/services/export_attendance.py:113 msgid "Nicht anwesend" msgstr "Pas présent" -#: vbv_lernwelt/course_session/services/export_attendance.py:118 +#: vbv_lernwelt/course_session/services/export_attendance.py:120 msgid "Vorname" msgstr "Prénom" -#: vbv_lernwelt/course_session/services/export_attendance.py:119 +#: vbv_lernwelt/course_session/services/export_attendance.py:121 msgid "Nachname" msgstr "Nom de famille" -#: vbv_lernwelt/course_session/services/export_attendance.py:120 +#: vbv_lernwelt/course_session/services/export_attendance.py:122 msgid "Email" msgstr "Email" -#: vbv_lernwelt/course_session/services/export_attendance.py:121 -#: vbv_lernwelt/course_session/services/export_attendance.py:133 +#: vbv_lernwelt/course_session/services/export_attendance.py:123 +#: vbv_lernwelt/course_session/services/export_attendance.py:135 msgid "Lehrvertragsnummer" msgstr "Numéro de contrat d'apprentissage" -#: vbv_lernwelt/feedback/export.py:33 +#: vbv_lernwelt/feedback/export.py:19 +msgid "export_feedback" +msgstr "export_feedback" + +#: vbv_lernwelt/feedback/export.py:35 msgid "Zufriedenheit insgesamt" msgstr "Degré de satisfaction au global" -#: vbv_lernwelt/feedback/export.py:34 +#: vbv_lernwelt/feedback/export.py:36 msgid "Zielerreichung insgesamt" msgstr "Degré de réalisation des objectifs" -#: vbv_lernwelt/feedback/export.py:37 +#: vbv_lernwelt/feedback/export.py:39 msgid "" "Wie beurteilst du deine Sicherheit bezüglichen den Themen nach dem Kurs?" -msgstr "As-tu l’impression de bien maîtriser les sujets qui ont été abordés pendant le cours ?" +msgstr "" +"As-tu l’impression de bien maîtriser les sujets qui ont été abordés pendant " +"le cours ?" -#: vbv_lernwelt/feedback/export.py:41 +#: vbv_lernwelt/feedback/export.py:43 msgid "Waren die Vorbereitungsaufträge klar und verständlich?" msgstr "Les travaux préparatoires étaient-ils clairs et compréhensibles ?" -#: vbv_lernwelt/feedback/export.py:45 +#: vbv_lernwelt/feedback/export.py:48 msgid "" "Wie beurteilst du die Themensicherheit und Fachkompetenz des Kursleiters/der " "Kursleiterin?" -msgstr "Que penses-tu des compétences techniques de la personne chargée du cours et de sa maîtrise du sujet ?" +msgstr "" +"Que penses-tu des compétences techniques de la personne chargée du cours et " +"de sa maîtrise du sujet ?" -#: vbv_lernwelt/feedback/export.py:49 +#: vbv_lernwelt/feedback/export.py:54 msgid "" "Wurden Fragen und Anregungen der Kursteilnehmenden ernst genommen und " "aufgegriffen?" -msgstr "Les questions et les suggestions des participants ont-elles été prises au sérieux et traitées correctement ?" +msgstr "" +"Les questions et les suggestions des participants ont-elles été prises au " +"sérieux et traitées correctement ?" -#: vbv_lernwelt/feedback/export.py:53 +#: vbv_lernwelt/feedback/export.py:59 msgid "Was möchtest du dem Kursleiter/der Kursleiterin sonst noch sagen?" -msgstr "Souhaites-tu ajouter quelque chose à l’intention de la personne chargée du cours ?" +msgstr "" +"Souhaites-tu ajouter quelque chose à l’intention de la personne chargée du " +"cours ?" -#: vbv_lernwelt/feedback/export.py:55 +#: vbv_lernwelt/feedback/export.py:61 msgid "Würdest du den Kurs weiterempfehlen?" msgstr "Est-ce que tu recommandes ce cours ?" -#: vbv_lernwelt/feedback/export.py:56 +#: vbv_lernwelt/feedback/export.py:62 msgid "Was hat dir besonders gut gefallen?" msgstr "Qu’est-ce qui t’a particulièrement plu ?" -#: vbv_lernwelt/feedback/export.py:57 +#: vbv_lernwelt/feedback/export.py:63 msgid "Wo siehst du Verbesserungspotential?" msgstr "À ton avis, quels sont les points qui pourraient être améliorés ?" -#: vbv_lernwelt/feedback/export.py:144 +#: vbv_lernwelt/feedback/export.py:150 msgid "Durchführung" msgstr "Opérations" -#: vbv_lernwelt/feedback/export.py:145 +#: vbv_lernwelt/feedback/export.py:151 msgid "Datum" msgstr "Date" diff --git a/server/locale/it/LC_MESSAGES/django.mo b/server/locale/it/LC_MESSAGES/django.mo index 5cb0e69893ce98efd29312e247a4346e6dfe2d66..0993e981009f21a06a5b10d1af13dc9147f90847 100644 GIT binary patch delta 742 zcmY+>KTH!*9Ki8k>*1e*U<+7k7&Kyx?k0+hB@D>a1g0kBavsn0!tt)Qm(-lmhJ=;K zQg;U9;z9@mCJqcbI>-(Sj&A7e_jg_c{iVPA+ypTGT){ei!WqmvB1?E5wZJzxg*#ZrFQ^;;MBV5Y-oZaO$6?A;tp(LD|JO%{{Uzi@ zD}ROjGy)wPNepGcMZJUN} zK2B=;E{3+5TS!l`yH>ZLKOFFb#(KVFO0 zn_WR2Tw>2irD1GDE#Ui>y&CU93x==zb3 JTTvKB@(+H*XUzZr delta 526 zcmXxhu}i~H5XbRrOs%a(+gPna6~T6}I_RcI1v7|>i--trf>{K+NGXUAaBy{UcM$)8 z_HS?z>Don{byC4e7r(y;J-B?{dm*{w-cNX2NZvyK&WK5}Oumpai;33hQBm+7X4yQqB=Q`C1+n+a diff --git a/server/locale/it/LC_MESSAGES/django.po b/server/locale/it/LC_MESSAGES/django.po index c094423a..bd4d61d5 100644 --- a/server/locale/it/LC_MESSAGES/django.po +++ b/server/locale/it/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-17 08:25+0200\n" +"POT-Creation-Date: 2024-06-17 15:43+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,16 +18,20 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: vbv_lernwelt/assignment/export.py:181 +#: vbv_lernwelt/assignment/export.py:31 +msgid "export_kompetenznachweis_elemente" +msgstr "esportazione_elementi_del_controllo" + +#: vbv_lernwelt/assignment/export.py:183 msgid "Bestanden" msgstr "Superato" -#: vbv_lernwelt/assignment/export.py:181 +#: vbv_lernwelt/assignment/export.py:185 msgid "Nicht bestanden" msgstr "Fallito" -#: vbv_lernwelt/assignment/export.py:195 vbv_lernwelt/assignment/export.py:198 -#: vbv_lernwelt/assignment/export.py:199 +#: vbv_lernwelt/assignment/export.py:199 vbv_lernwelt/assignment/export.py:202 +#: vbv_lernwelt/assignment/export.py:203 msgid "Keine Daten" msgstr "Nessun dato" @@ -103,81 +107,93 @@ msgstr "" msgid "ÜK-Lehrgang" msgstr "" -#: vbv_lernwelt/course_session/services/export_attendance.py:111 +#: vbv_lernwelt/course_session/services/export_attendance.py:15 +msgid "export_anwesenheit" +msgstr "esportazione_presenza" + +#: vbv_lernwelt/course_session/services/export_attendance.py:113 msgid "Anwesend" msgstr "Presente" -#: vbv_lernwelt/course_session/services/export_attendance.py:111 +#: vbv_lernwelt/course_session/services/export_attendance.py:113 msgid "Nicht anwesend" msgstr "Non presente" -#: vbv_lernwelt/course_session/services/export_attendance.py:118 +#: vbv_lernwelt/course_session/services/export_attendance.py:120 msgid "Vorname" msgstr "Nome" -#: vbv_lernwelt/course_session/services/export_attendance.py:119 +#: vbv_lernwelt/course_session/services/export_attendance.py:121 msgid "Nachname" msgstr "Cognome" -#: vbv_lernwelt/course_session/services/export_attendance.py:120 +#: vbv_lernwelt/course_session/services/export_attendance.py:122 msgid "Email" msgstr "E-mail" -#: vbv_lernwelt/course_session/services/export_attendance.py:121 -#: vbv_lernwelt/course_session/services/export_attendance.py:133 +#: vbv_lernwelt/course_session/services/export_attendance.py:123 +#: vbv_lernwelt/course_session/services/export_attendance.py:135 msgid "Lehrvertragsnummer" msgstr "Numero di contratto di tirocinio" -#: vbv_lernwelt/feedback/export.py:33 +#: vbv_lernwelt/feedback/export.py:19 +msgid "export_feedback" +msgstr "esportazione_feedback" + +#: vbv_lernwelt/feedback/export.py:35 msgid "Zufriedenheit insgesamt" msgstr "Soddisfazione complessiva" -#: vbv_lernwelt/feedback/export.py:34 +#: vbv_lernwelt/feedback/export.py:36 msgid "Zielerreichung insgesamt" msgstr "Raggiungimento complessivo degli obiettivi" -#: vbv_lernwelt/feedback/export.py:37 +#: vbv_lernwelt/feedback/export.py:39 msgid "" "Wie beurteilst du deine Sicherheit bezüglichen den Themen nach dem Kurs?" msgstr "Come valuti il tuo livello di preparazione sui temi dopo il corso?" -#: vbv_lernwelt/feedback/export.py:41 +#: vbv_lernwelt/feedback/export.py:43 msgid "Waren die Vorbereitungsaufträge klar und verständlich?" msgstr "Gli incarichi di preparazione erano chiari e comprensibili?" -#: vbv_lernwelt/feedback/export.py:45 +#: vbv_lernwelt/feedback/export.py:48 msgid "" "Wie beurteilst du die Themensicherheit und Fachkompetenz des Kursleiters/der " "Kursleiterin?" -msgstr "Come valuti il livello di preparazione sui temi e le competenze specialistiche dell’istruttore/istruttrice del corso?" +msgstr "" +"Come valuti il livello di preparazione sui temi e le competenze " +"specialistiche dell’istruttore/istruttrice del corso?" -#: vbv_lernwelt/feedback/export.py:49 +#: vbv_lernwelt/feedback/export.py:54 msgid "" "Wurden Fragen und Anregungen der Kursteilnehmenden ernst genommen und " "aufgegriffen?" -msgstr "Le domande e i suggerimenti dei/delle partecipanti al corso sono stati accolti e presi sul serio?" +msgstr "" +"Le domande e i suggerimenti dei/delle partecipanti al corso sono stati " +"accolti e presi sul serio?" -#: vbv_lernwelt/feedback/export.py:53 +#: vbv_lernwelt/feedback/export.py:59 msgid "Was möchtest du dem Kursleiter/der Kursleiterin sonst noch sagen?" msgstr "Cos’altro vorresti ancora dire all’istruttore/istruttrice del corso?" -#: vbv_lernwelt/feedback/export.py:55 +#: vbv_lernwelt/feedback/export.py:61 msgid "Würdest du den Kurs weiterempfehlen?" msgstr "Raccomanderesti il corso?" -#: vbv_lernwelt/feedback/export.py:56 +#: vbv_lernwelt/feedback/export.py:62 msgid "Was hat dir besonders gut gefallen?" msgstr "Cos’hai apprezzato particolarmente?" -#: vbv_lernwelt/feedback/export.py:57 +#: vbv_lernwelt/feedback/export.py:63 msgid "Wo siehst du Verbesserungspotential?" msgstr "Dove vedi un potenziale di miglioramento?" -#: vbv_lernwelt/feedback/export.py:144 +#: vbv_lernwelt/feedback/export.py:150 msgid "Durchführung" msgstr "Svolgimenti" -#: vbv_lernwelt/feedback/export.py:145 +#: vbv_lernwelt/feedback/export.py:151 msgid "Datum" msgstr "Data" diff --git a/server/vbv_lernwelt/assignment/export.py b/server/vbv_lernwelt/assignment/export.py index 8761dabe..f8cbc205 100644 --- a/server/vbv_lernwelt/assignment/export.py +++ b/server/vbv_lernwelt/assignment/export.py @@ -28,6 +28,8 @@ from vbv_lernwelt.learnpath.models import LearningContent logger = structlog.get_logger(__name__) +COMPETENCE_ELEMENT_EXPORT_FILE_NAME = _("export_kompetenznachweis_elemente") + @dataclass class CompetenceCertificateElement: @@ -37,7 +39,7 @@ class CompetenceCertificateElement: course_session: CourseSession -def export_competence_certificates( +def export_competence_elements( course_session_ids: list[str], circle_ids: list[int] = None, save_as_file: bool = False, @@ -99,7 +101,7 @@ def export_competence_certificates( ) if save_as_file: - wb.save(make_export_filename(name="competence_certificate_export")) + wb.save(make_export_filename(COMPETENCE_ELEMENT_EXPORT_FILE_NAME)) else: output = BytesIO() wb.save(output) diff --git a/server/vbv_lernwelt/assignment/management/commands/export_assignment_completions.py b/server/vbv_lernwelt/assignment/management/commands/export_assignment_completions.py index 0cd3e291..6b74e782 100644 --- a/server/vbv_lernwelt/assignment/management/commands/export_assignment_completions.py +++ b/server/vbv_lernwelt/assignment/management/commands/export_assignment_completions.py @@ -1,7 +1,7 @@ import djclick as click import structlog -from vbv_lernwelt.assignment.export import export_competence_certificates +from vbv_lernwelt.assignment.export import export_competence_elements logger = structlog.get_logger(__name__) @@ -15,4 +15,4 @@ logger = structlog.get_logger(__name__) ) def command(course_session_id, save_as_file): # using the output from call_command was a bit cumbersome, so this is just a wrapper for the actual function - export_competence_certificates([course_session_id], save_as_file=save_as_file) + export_competence_elements([course_session_id], save_as_file=save_as_file) diff --git a/server/vbv_lernwelt/assignment/tests/test_assignment_completions_export.py b/server/vbv_lernwelt/assignment/tests/test_assignment_completions_export.py index 0a41ef98..550bf67f 100644 --- a/server/vbv_lernwelt/assignment/tests/test_assignment_completions_export.py +++ b/server/vbv_lernwelt/assignment/tests/test_assignment_completions_export.py @@ -2,7 +2,7 @@ import io from openpyxl import load_workbook -from vbv_lernwelt.assignment.export import export_competence_certificates +from vbv_lernwelt.assignment.export import export_competence_elements from vbv_lernwelt.assignment.models import Assignment from vbv_lernwelt.assignment.services import update_assignment_completion from vbv_lernwelt.core.constants import TEST_STUDENT1_USER_ID, TEST_STUDENT2_USER_ID @@ -115,7 +115,7 @@ class AssignmentCompletionExportTestCase(ExportBaseTestCase): def _generate_workbook(self, course_session_ids): export_data = io.BytesIO( - export_competence_certificates(course_session_ids, save_as_file=False) + export_competence_elements(course_session_ids, save_as_file=False) ) return load_workbook(export_data) diff --git a/server/vbv_lernwelt/course_session/services/export_attendance.py b/server/vbv_lernwelt/course_session/services/export_attendance.py index 0fde37bb..4ce81de1 100644 --- a/server/vbv_lernwelt/course_session/services/export_attendance.py +++ b/server/vbv_lernwelt/course_session/services/export_attendance.py @@ -12,6 +12,8 @@ from vbv_lernwelt.course_session.models import CourseSessionAttendanceCourse logger = structlog.get_logger(__name__) +ATTENDANCE_EXPORT_FILENAME = _("export_anwesenheit") + def export_attendance( course_session_ids: list[str], @@ -56,7 +58,7 @@ def export_attendance( ) if save_as_file: - wb.save(make_export_filename()) + wb.save(make_export_filename(ATTENDANCE_EXPORT_FILENAME)) else: output = BytesIO() wb.save(output) @@ -155,7 +157,7 @@ def group_by_session_title(items): } -def make_export_filename(name: str = "attendance_export"): +def make_export_filename(name: str): today_date = datetime.today().strftime("%Y-%m-%d") return f"{name}_{today_date}.xlsx" diff --git a/server/vbv_lernwelt/dashboard/views.py b/server/vbv_lernwelt/dashboard/views.py index 05723e34..33962032 100644 --- a/server/vbv_lernwelt/dashboard/views.py +++ b/server/vbv_lernwelt/dashboard/views.py @@ -11,7 +11,10 @@ from rest_framework.decorators import api_view from rest_framework.exceptions import PermissionDenied from rest_framework.response import Response -from vbv_lernwelt.assignment.export import export_competence_certificates +from vbv_lernwelt.assignment.export import ( + COMPETENCE_ELEMENT_EXPORT_FILE_NAME, + export_competence_elements, +) from vbv_lernwelt.assignment.models import ( AssignmentCompletion, AssignmentCompletionStatus, @@ -28,13 +31,17 @@ from vbv_lernwelt.course.models import ( ) from vbv_lernwelt.course.views import logger from vbv_lernwelt.course_session.services.export_attendance import ( + ATTENDANCE_EXPORT_FILENAME, export_attendance, make_export_filename, ) from vbv_lernwelt.course_session_group.models import CourseSessionGroup from vbv_lernwelt.duedate.models import DueDate from vbv_lernwelt.duedate.serializers import DueDateSerializer -from vbv_lernwelt.feedback.export import export_feedback_with_circle_restriction +from vbv_lernwelt.feedback.export import ( + export_feedback_with_circle_restriction, + FEEDBACK_EXPORT_FILE_NAME, +) from vbv_lernwelt.learning_mentor.models import LearningMentor from vbv_lernwelt.learnpath.models import Circle from vbv_lernwelt.self_evaluation_feedback.models import SelfEvaluationFeedback @@ -550,21 +557,21 @@ def export_attendance_as_xsl(request): [cs.id for cs in course_sessions_with_roles], circle_ids=circle_ids, ) - return _make_excel_response(data) + return _make_excel_response(data, file_name=ATTENDANCE_EXPORT_FILENAME) @api_view(["POST"]) -def export_competence_certificate_as_xsl(request): +def export_competence_elements_as_xsl(request): circle_ids = request.data.get("circleIds", None) requested_course_session_ids = request.data.get("courseSessionIds", []) course_sessions_with_roles = _get_permitted_courses_sessions_for_user( request.user, requested_course_session_ids ) - data = export_competence_certificates( + data = export_competence_elements( [cswr.id for cswr in course_sessions_with_roles], circle_ids=circle_ids, ) - return _make_excel_response(data) + return _make_excel_response(data, COMPETENCE_ELEMENT_EXPORT_FILE_NAME) @api_view(["POST"]) @@ -582,7 +589,7 @@ def export_feedback_as_xsl(request): ) # noqa data = export_feedback_with_circle_restriction(allowed_circles, False) - return _make_excel_response(data) + return _make_excel_response(data, FEEDBACK_EXPORT_FILE_NAME) def _get_permitted_courses_sessions_for_user( @@ -597,11 +604,14 @@ def _get_permitted_courses_sessions_for_user( return user_course_sessions_with_roles -def _make_excel_response(data: bytes) -> HttpResponse: +def _make_excel_response(data: bytes, file_name: str) -> HttpResponse: encoded_data = base64.b64encode(data).decode("utf-8") # Create the JSON response - response_data = {"encoded_data": encoded_data, "file_name": make_export_filename()} + response_data = { + "encoded_data": encoded_data, + "file_name": make_export_filename(file_name), + } return Response(response_data, status=200) diff --git a/server/vbv_lernwelt/feedback/export.py b/server/vbv_lernwelt/feedback/export.py index 0086d910..2dab9cb6 100644 --- a/server/vbv_lernwelt/feedback/export.py +++ b/server/vbv_lernwelt/feedback/export.py @@ -16,6 +16,8 @@ from vbv_lernwelt.feedback.models import FeedbackResponse logger = structlog.get_logger(__name__) +FEEDBACK_EXPORT_FILE_NAME = _("export_feedback") + VV_FEEDBACK_QUESTIONS = [ ("satisfaction", "Zufriedenheit insgesamt"), ("goal_attainment", "Zielerreichung insgesamt"), @@ -121,7 +123,7 @@ def _generate_feedback_export(feedback_unordered: QuerySet, save_as_file: bool): _create_sheet(wb, circle.title, group_feedbacks) if save_as_file: - wb.save(make_export_filename(name="feedback_export")) + wb.save(make_export_filename(FEEDBACK_EXPORT_FILE_NAME)) else: # todo handle IndexError output = BytesIO()