diff --git a/caseworker/queues/views/cases.py b/caseworker/queues/views/cases.py index ae31eb1ea9..a995757cc6 100644 --- a/caseworker/queues/views/cases.py +++ b/caseworker/queues/views/cases.py @@ -114,6 +114,7 @@ def get_params(self): params[param] = date_obj params["flags"] = self.request.GET.getlist("flags", []) + params["exclude_flags"] = self.request.GET.getlist("exclude_flags", []) params["countries"] = self.request.GET.getlist("countries", []) params["assigned_queues"] = self.request.GET.getlist("assigned_queues", []) params["control_list_entry"] = self.request.GET.getlist("control_list_entry", []) diff --git a/caseworker/queues/views/forms.py b/caseworker/queues/views/forms.py index 37c374577b..c48380119d 100644 --- a/caseworker/queues/views/forms.py +++ b/caseworker/queues/views/forms.py @@ -179,6 +179,14 @@ def __init__(self, queue, filters_data, all_flags, all_cles, all_regimes, countr # setting id for javascript to use widget=forms.SelectMultiple(attrs={"id": "flags"}), ) + self.fields["exclude_flags"] = forms.MultipleChoiceField( + label="Exclude flags", + choices=flags_choices, + required=False, + help_text=f'Flag information (open in a new window)', + # setting id for javascript to use + widget=forms.SelectMultiple(attrs={"id": "exclude_flags"}), + ) self.fields["control_list_entry"] = forms.MultipleChoiceField( label="Control list entry", choices=cle_choices, @@ -220,6 +228,7 @@ def __init__(self, queue, filters_data, all_flags, all_cles, all_regimes, countr "submitted_from", "submitted_to", Field("flags", css_class="multi-select-filter"), + Field("exclude_flags", css_class="multi-select-filter"), "finalised_from", "finalised_to", ] diff --git a/unit_tests/caseworker/queues/views/test_cases.py b/unit_tests/caseworker/queues/views/test_cases.py index e85a1c6a0d..73449e1730 100644 --- a/unit_tests/caseworker/queues/views/test_cases.py +++ b/unit_tests/caseworker/queues/views/test_cases.py @@ -167,6 +167,7 @@ def test_cases_home_page_view_context(authorized_client): "assigned_user", "licence_status", "flags", + "exclude_flags", "countries", "assigned_queues", "is_nca_applicable", @@ -371,6 +372,19 @@ def test_cases_home_page_exclude_control_list_entries_search(authorized_client, } +def test_cases_home_page_exclude_flags_search(authorized_client, mock_cases_search): + url = reverse("queues:cases") + response = authorized_client.get(url) + + url = reverse("queues:cases") + "?exclude_flags=flag_id_1&exclude_flags=flag_id_2" + response = authorized_client.get(url) + assert response.status_code == 200 + assert mock_cases_search.last_request.qs == { + **default_params, + "exclude_flags": ["flag_id_1", "flag_id_2"], + } + + def test_cases_home_page_max_total_value_search(authorized_client, mock_cases_search): url = reverse("queues:cases") response = authorized_client.get(url)