diff --git a/evap/evaluation/migrations/0164_remove_questionnaire_questionnaire_visibility_choices_and_more.py b/evap/evaluation/migrations/0164_remove_questionnaire_questionnaire_visibility_choices_and_more.py new file mode 100644 index 0000000000..afdff0208f --- /dev/null +++ b/evap/evaluation/migrations/0164_remove_questionnaire_questionnaire_visibility_choices_and_more.py @@ -0,0 +1,31 @@ +# Generated by Django 5.2.11 on 2026-03-02 21:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("evaluation", "0163_migrate_cms_links"), + ] + + operations = [ + migrations.RemoveConstraint( + model_name="questionnaire", + name="Questionnaire_visibility_choices", + ), + migrations.AlterField( + model_name="questionnaire", + name="visibility", + field=models.IntegerField( + choices=[(0, "Don't show"), (1, "Managers only"), (2, "Managers and editors"), (3, "Archived")], + default=1, + verbose_name="visibility", + ), + ), + migrations.AddConstraint( + model_name="questionnaire", + constraint=models.CheckConstraint( + condition=models.Q(("visibility__in", [0, 1, 2, 3])), name="Questionnaire_visibility_choices" + ), + ), + ] diff --git a/evap/evaluation/models.py b/evap/evaluation/models.py index fc8f4b02fe..ed31ccf366 100644 --- a/evap/evaluation/models.py +++ b/evap/evaluation/models.py @@ -214,6 +214,7 @@ class Visibility(models.IntegerChoices): HIDDEN = 0, _("Don't show") MANAGERS = 1, _("Managers only") EDITORS = 2, _("Managers and editors") + ARCHIVED = 3, _("Archived") visibility = models.IntegerField( choices=Visibility.choices, verbose_name=_("visibility"), default=Visibility.MANAGERS diff --git a/evap/evaluation/tools.py b/evap/evaluation/tools.py index 8ff1cb777b..45ca866bf5 100644 --- a/evap/evaluation/tools.py +++ b/evap/evaluation/tools.py @@ -175,11 +175,19 @@ def get_parameter_from_url_or_session(request: HttpRequest, parameter: str, defa if result_str is None: # if no parameter is given take session value result = request.session.get(parameter, default) else: - result = {"true": True, "false": False}.get(result_str.lower()) # convert parameter to boolean + result = {"true": True, "false": False}.get(result_str.lower(), default) # convert parameter to boolean request.session[parameter] = result # store value for session return result +def get_string_from_url_or_session(request: HttpRequest, parameter: str, default: str | None = None) -> str | None: + result = request.GET.get(parameter, None) + if result is None: + result = request.session.get(parameter, default) + request.session[parameter] = result + return result + + def translate(**kwargs): # pylint is really buggy with this method. # pylint: disable=unused-variable, useless-suppression diff --git a/evap/staff/forms.py b/evap/staff/forms.py index 149e18772d..ee35175f83 100644 --- a/evap/staff/forms.py +++ b/evap/staff/forms.py @@ -444,7 +444,7 @@ def __init__(self, *args, requires_decided_main_language=False, **kwargs): super().__init__(*args, **kwargs) self.fields["course"].queryset = Course.objects.filter(semester=semester) - visible_questionnaires = ~Q(visibility=Questionnaire.Visibility.HIDDEN) + visible_questionnaires = Q(visibility__in=[Questionnaire.Visibility.EDITORS, Questionnaire.Visibility.MANAGERS]) if self.instance.pk is not None: visible_questionnaires |= Q(contributions__evaluation=self.instance) diff --git a/evap/staff/templates/staff_questionnaire_index.html b/evap/staff/templates/staff_questionnaire_index.html index b310a14668..a2cce297b9 100644 --- a/evap/staff/templates/staff_questionnaire_index.html +++ b/evap/staff/templates/staff_questionnaire_index.html @@ -10,13 +10,16 @@
{% translate 'There are no questionnaires yet.' %} @@ -125,4 +161,23 @@ button.addEventListener("click", () => changeLocked(button)); } + + {% endblock %} diff --git a/evap/staff/templates/staff_questionnaire_index_list.html b/evap/staff/templates/staff_questionnaire_index_list.html index d05d956939..defc93079f 100644 --- a/evap/staff/templates/staff_questionnaire_index_list.html +++ b/evap/staff/templates/staff_questionnaire_index_list.html @@ -1,84 +1,71 @@ -{% if questionnaires %} -
| - | {% translate 'Questionnaire' %} | -- {% if type != 'contributor' %} - {% translate 'Locked' %} - {% endif %} - | -{% translate 'Visibility' %} | -{% translate 'Actions' %} | -
|---|---|---|---|---|
| - |
- {{ questionnaire.name }}
- - {% blocktranslate count questionnaire.questions.count as count %}{{ count }} question{% plural %}{{ count }} questions{% endblocktranslate %}, - - {% blocktranslate count count=questionnaire.contributions.count %}used {{ count }} time{% plural %}used {{ count }} times{% endblocktranslate %} - - |
- - {% if type != 'contributor' %} - - {% endif %} - | -- - | -
-
-
-
-
- {% if questionnaire.can_be_deleted_by_manager %}
- |
-
The Contribution "General Contribution" was created.