From a5981e33274f18b005fdb9672b395a700e79eb1c Mon Sep 17 00:00:00 2001 From: Jakob Date: Mon, 10 Nov 2025 21:48:03 +0100 Subject: [PATCH 1/8] fix #2555 language x in preview --- evap/contributor/forms.py | 1 + evap/student/views.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/evap/contributor/forms.py b/evap/contributor/forms.py index 29f3e9ad83..a825402268 100644 --- a/evap/contributor/forms.py +++ b/evap/contributor/forms.py @@ -117,6 +117,7 @@ def clean_main_language(self): main_language = self.cleaned_data.get("main_language") if main_language == Evaluation.UNDECIDED_MAIN_LANGUAGE: self.add_error("main_language", _("You have to set a main language for this evaluation.")) + return main_language def save(self, *args, **kw): diff --git a/evap/student/views.py b/evap/student/views.py index ae774bc2fa..151ae190dd 100644 --- a/evap/student/views.py +++ b/evap/student/views.py @@ -253,6 +253,8 @@ def render_vote_page( for_rendering_in_modal: bool = False, ) -> HttpResponse: language = request.GET.get("language", evaluation.main_language) + if language == "x": + language = "en" with translation.override(language): form_groups = get_vote_page_form_groups(request, evaluation, preview=preview, preselect_no_answer=dropout) From df5b8ff4568f84595aa157c5ad017e1cb36c3762 Mon Sep 17 00:00:00 2001 From: Jakob Date: Mon, 17 Nov 2025 18:54:07 +0100 Subject: [PATCH 2/8] fix #2555 preview failing due to undecided main language --- evap/contributor/forms.py | 1 - evap/student/views.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/evap/contributor/forms.py b/evap/contributor/forms.py index a825402268..29f3e9ad83 100644 --- a/evap/contributor/forms.py +++ b/evap/contributor/forms.py @@ -117,7 +117,6 @@ def clean_main_language(self): main_language = self.cleaned_data.get("main_language") if main_language == Evaluation.UNDECIDED_MAIN_LANGUAGE: self.add_error("main_language", _("You have to set a main language for this evaluation.")) - return main_language def save(self, *args, **kw): diff --git a/evap/student/views.py b/evap/student/views.py index 151ae190dd..d6349f17d1 100644 --- a/evap/student/views.py +++ b/evap/student/views.py @@ -252,9 +252,9 @@ def render_vote_page( dropout: bool, for_rendering_in_modal: bool = False, ) -> HttpResponse: + if(evaluation.main_language == evaluation.UNDECIDED_MAIN_LANGUAGE): + evaluation.main_language = "en" language = request.GET.get("language", evaluation.main_language) - if language == "x": - language = "en" with translation.override(language): form_groups = get_vote_page_form_groups(request, evaluation, preview=preview, preselect_no_answer=dropout) From 0a0dcfe1a20dec58dca9cabc844f10edf36cec90 Mon Sep 17 00:00:00 2001 From: Jakob Date: Mon, 17 Nov 2025 19:43:36 +0100 Subject: [PATCH 3/8] fix formating --- evap/student/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evap/student/views.py b/evap/student/views.py index d6349f17d1..29db53e5b7 100644 --- a/evap/student/views.py +++ b/evap/student/views.py @@ -252,7 +252,7 @@ def render_vote_page( dropout: bool, for_rendering_in_modal: bool = False, ) -> HttpResponse: - if(evaluation.main_language == evaluation.UNDECIDED_MAIN_LANGUAGE): + if evaluation.main_language == evaluation.UNDECIDED_MAIN_LANGUAGE: evaluation.main_language = "en" language = request.GET.get("language", evaluation.main_language) with translation.override(language): From 14356b40ac93dfb48c7ee9b086416e8119cc0050 Mon Sep 17 00:00:00 2001 From: Jakob Date: Mon, 1 Dec 2025 18:15:56 +0100 Subject: [PATCH 4/8] standard load en if main languag undecided --- evap/student/views.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/evap/student/views.py b/evap/student/views.py index 29db53e5b7..4f2fdd6bf0 100644 --- a/evap/student/views.py +++ b/evap/student/views.py @@ -253,8 +253,9 @@ def render_vote_page( for_rendering_in_modal: bool = False, ) -> HttpResponse: if evaluation.main_language == evaluation.UNDECIDED_MAIN_LANGUAGE: - evaluation.main_language = "en" - language = request.GET.get("language", evaluation.main_language) + language = request.GET.get("language", "en") + else: + language = request.GET.get("language", evaluation.main_language) with translation.override(language): form_groups = get_vote_page_form_groups(request, evaluation, preview=preview, preselect_no_answer=dropout) From 2729cfea832a41fa905fee116f5e16da3b05e244 Mon Sep 17 00:00:00 2001 From: Jakob Date: Mon, 1 Dec 2025 19:08:44 +0100 Subject: [PATCH 5/8] fallback_language implemented --- evap/student/views.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/evap/student/views.py b/evap/student/views.py index 4f2fdd6bf0..c085221a0e 100644 --- a/evap/student/views.py +++ b/evap/student/views.py @@ -252,10 +252,11 @@ def render_vote_page( dropout: bool, for_rendering_in_modal: bool = False, ) -> HttpResponse: - if evaluation.main_language == evaluation.UNDECIDED_MAIN_LANGUAGE: - language = request.GET.get("language", "en") - else: - language = request.GET.get("language", evaluation.main_language) + fallback_language = ( + evaluation.main_language if evaluation.main_language != evaluation.UNDECIDED_MAIN_LANGUAGE else "en" + ) + language = request.GET.get("language", fallback_language) + with translation.override(language): form_groups = get_vote_page_form_groups(request, evaluation, preview=preview, preselect_no_answer=dropout) From cf4d92fe365b3953b09d518e4d4143f315dfd81e Mon Sep 17 00:00:00 2001 From: Jakob Date: Mon, 27 Apr 2026 20:56:47 +0200 Subject: [PATCH 6/8] questionable tests added --- evap/staff/tests/test_views.py | 8 ++++++++ evap/student/views.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/evap/staff/tests/test_views.py b/evap/staff/tests/test_views.py index 7cccfe7841..8ee0364f72 100644 --- a/evap/staff/tests/test_views.py +++ b/evap/staff/tests/test_views.py @@ -2465,11 +2465,19 @@ def setUpTestData(cls): cls.test_users = [cls.manager] cls.url = reverse("staff:evaluation_preview", args=[cls.evaluation.pk]) + cls.evaluation_un = baker.make(Evaluation, main_language="x") + cls.url2 = reverse("staff:evaluation_preview", args=[cls.evaluation_un.pk]) + + def test_without_questionnaires_assigned(self): # regression test for #1747 self.evaluation.general_contribution.questionnaires.set([]) self.app.get(self.url, user=self.manager, status=200) + def test_lang_undecided(self): + self.app.get(self.url2, user=self.manager, status=200) + + class TestEvaluationImportPersonsView(WebTestStaffMode): @classmethod diff --git a/evap/student/views.py b/evap/student/views.py index c085221a0e..5ba883b946 100644 --- a/evap/student/views.py +++ b/evap/student/views.py @@ -253,7 +253,7 @@ def render_vote_page( for_rendering_in_modal: bool = False, ) -> HttpResponse: fallback_language = ( - evaluation.main_language if evaluation.main_language != evaluation.UNDECIDED_MAIN_LANGUAGE else "en" + evaluation.main_language if evaluation.main_language != evaluation.UNDECIDED_MAIN_LANGUAGE else "en" ) language = request.GET.get("language", fallback_language) From 773f7adecea13b04f401638d24e49e13e752b47f Mon Sep 17 00:00:00 2001 From: Jakob Date: Mon, 27 Apr 2026 21:45:14 +0200 Subject: [PATCH 7/8] tests added --- evap/staff/tests/test_views.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/evap/staff/tests/test_views.py b/evap/staff/tests/test_views.py index 8ee0364f72..1edf6b8045 100644 --- a/evap/staff/tests/test_views.py +++ b/evap/staff/tests/test_views.py @@ -2465,8 +2465,9 @@ def setUpTestData(cls): cls.test_users = [cls.manager] cls.url = reverse("staff:evaluation_preview", args=[cls.evaluation.pk]) - cls.evaluation_un = baker.make(Evaluation, main_language="x") + cls.evaluation_un = baker.make(Evaluation, main_language=Evaluation.UNDECIDED_MAIN_LANGUAGE) cls.url2 = reverse("staff:evaluation_preview", args=[cls.evaluation_un.pk]) + cls.evaluation_un.general_contribution.questionnaires.set([baker.make(Questionnaire)]) def test_without_questionnaires_assigned(self): @@ -2475,10 +2476,9 @@ def test_without_questionnaires_assigned(self): self.app.get(self.url, user=self.manager, status=200) def test_lang_undecided(self): - self.app.get(self.url2, user=self.manager, status=200) + response = self.app.get(self.url2, user=self.manager, status=200) - class TestEvaluationImportPersonsView(WebTestStaffMode): @classmethod def setUpTestData(cls): From f81d7481755f8703a8d2e6b814d839d7198e1428 Mon Sep 17 00:00:00 2001 From: Jakob Date: Mon, 27 Apr 2026 21:51:40 +0200 Subject: [PATCH 8/8] tests added and code formatted --- evap/staff/tests/test_views.py | 5 ++--- evap/student/views.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/evap/staff/tests/test_views.py b/evap/staff/tests/test_views.py index 1edf6b8045..e665f2246e 100644 --- a/evap/staff/tests/test_views.py +++ b/evap/staff/tests/test_views.py @@ -2469,15 +2469,14 @@ def setUpTestData(cls): cls.url2 = reverse("staff:evaluation_preview", args=[cls.evaluation_un.pk]) cls.evaluation_un.general_contribution.questionnaires.set([baker.make(Questionnaire)]) - def test_without_questionnaires_assigned(self): # regression test for #1747 self.evaluation.general_contribution.questionnaires.set([]) self.app.get(self.url, user=self.manager, status=200) def test_lang_undecided(self): - response = self.app.get(self.url2, user=self.manager, status=200) - + self.app.get(self.url2, user=self.manager, status=200) + class TestEvaluationImportPersonsView(WebTestStaffMode): @classmethod diff --git a/evap/student/views.py b/evap/student/views.py index 5ba883b946..c085221a0e 100644 --- a/evap/student/views.py +++ b/evap/student/views.py @@ -253,7 +253,7 @@ def render_vote_page( for_rendering_in_modal: bool = False, ) -> HttpResponse: fallback_language = ( - evaluation.main_language if evaluation.main_language != evaluation.UNDECIDED_MAIN_LANGUAGE else "en" + evaluation.main_language if evaluation.main_language != evaluation.UNDECIDED_MAIN_LANGUAGE else "en" ) language = request.GET.get("language", fallback_language)