From 526a21b1561cf0d810b350289b9c5abb5d28ba5e Mon Sep 17 00:00:00 2001 From: Arun Siluvery Date: Tue, 25 Feb 2025 16:06:38 +0000 Subject: [PATCH 1/3] Disable sub statuses check rule for F680 --- caseworker/core/rules.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/caseworker/core/rules.py b/caseworker/core/rules.py index 479d133769..32fff2631d 100644 --- a/caseworker/core/rules.py +++ b/caseworker/core/rules.py @@ -35,6 +35,8 @@ def get_logged_in_caseworker(request): @rules.predicate def has_available_sub_statuses(request, case): + if case.reference != "siel": + return False return bool(get_case_sub_statuses(request, case["id"])) From 43a23e394fa5b5cbf1514363ecef5c98872e4902 Mon Sep 17 00:00:00 2001 From: Arun Siluvery Date: Tue, 25 Feb 2025 16:07:47 +0000 Subject: [PATCH 2/3] Add new post advice method for F680 --- caseworker/advice/services.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/caseworker/advice/services.py b/caseworker/advice/services.py index e89479fea0..0c9b056ef2 100644 --- a/caseworker/advice/services.py +++ b/caseworker/advice/services.py @@ -374,6 +374,23 @@ def post_approval_advice(request, case, data, level="user-advice"): return response.json(), response.status_code +def post_f680_approval_advice(request, case, data, level="user-advice"): + json = [ + { + "type": "proviso" if data.get("proviso", False) else "approve", + "text": data["approval_reasons"], + "proviso": data.get("proviso", ""), + "note": data.get("instructions_to_exporter", ""), + "footnote_required": True if data.get("footnote_details") else False, + "footnote": data.get("footnote_details", ""), + "denial_reasons": [], + } + ] + response = client.post(request, f"/cases/{case['id']}/{level}/", json) + response.raise_for_status() + return response.json(), response.status_code + + def post_refusal_advice(request, case, data, level="user-advice"): json = [ { From 1a7d4748841699fca54358ee43b8d5ceb760c3c7 Mon Sep 17 00:00:00 2001 From: Arun Siluvery Date: Tue, 25 Feb 2025 16:09:21 +0000 Subject: [PATCH 3/3] Add view to make recommendation for F680 application --- caseworker/advice/views/approval.py | 2 ++ caseworker/advice/views/mixins.py | 4 ++-- caseworker/advice/views/views.py | 2 +- .../case/recommendation/recommendation.html | 9 +++++++++ caseworker/f680/urls.py | 5 +++++ caseworker/f680/views.py | 17 +++++++++++++++++ 6 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 caseworker/f680/templates/f680/case/recommendation/recommendation.html diff --git a/caseworker/advice/views/approval.py b/caseworker/advice/views/approval.py index e9531a282a..8155be6b7f 100644 --- a/caseworker/advice/views/approval.py +++ b/caseworker/advice/views/approval.py @@ -77,6 +77,8 @@ def get_context_data(self, **kwargs): "Unexpected error adding approval advice", ) def post_approval_advice(self, data): + if self.case['case_type']['reference']['key'] == 'f680': + return services.post_f680_approval_advice(self.request, self.case, data) return services.post_approval_advice(self.request, self.case, data) def get_payload(self, form_dict): diff --git a/caseworker/advice/views/mixins.py b/caseworker/advice/views/mixins.py index 08d2b11a2c..8bfc265d11 100644 --- a/caseworker/advice/views/mixins.py +++ b/caseworker/advice/views/mixins.py @@ -46,10 +46,10 @@ def caseworker(self): @property def goods(self): - for index, good_on_application in enumerate(self.case["data"]["goods"], start=1): + for index, good_on_application in enumerate(self.case["data"].get("goods", []), start=1): good_on_application["line_number"] = index - return self.case["data"]["goods"] + return self.case["data"].get("goods", []) def get_context(self, **kwargs): return {} diff --git a/caseworker/advice/views/views.py b/caseworker/advice/views/views.py index 9fd9e8bd71..6a9ee3418e 100644 --- a/caseworker/advice/views/views.py +++ b/caseworker/advice/views/views.py @@ -139,7 +139,7 @@ class AdviceDetailView(LoginRequiredMixin, CaseTabsMixin, CaseContextMixin, DESN def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) my_advice = services.get_my_advice(self.case.advice, self.caseworker_id, self.caseworker["team"]["alias"]) - nlr_products = services.filter_nlr_products(self.case["data"]["goods"]) + nlr_products = services.filter_nlr_products(self.case["data"].get("goods", [])) advice_completed = services.unadvised_countries(self.caseworker, self.case) == {} title = f"View recommendation for this case - {self.case.reference_code} - {self.case.organisation['name']}" diff --git a/caseworker/f680/templates/f680/case/recommendation/recommendation.html b/caseworker/f680/templates/f680/case/recommendation/recommendation.html new file mode 100644 index 0000000000..fbbb70ce32 --- /dev/null +++ b/caseworker/f680/templates/f680/case/recommendation/recommendation.html @@ -0,0 +1,9 @@ +{% extends 'layouts/case.html' %} + + +{% block details %} + +
+Make recommendation + +{% endblock %} diff --git a/caseworker/f680/urls.py b/caseworker/f680/urls.py index 6377f2fe62..ad6c025234 100644 --- a/caseworker/f680/urls.py +++ b/caseworker/f680/urls.py @@ -11,4 +11,9 @@ views.CaseDetailView.as_view(), name="details", ), + path( + "recommendation/", + views.CaseRecommendationView.as_view(), + name="recommendation", + ), ] diff --git a/caseworker/f680/views.py b/caseworker/f680/views.py index 26bbde145d..bbd1fd60d3 100644 --- a/caseworker/f680/views.py +++ b/caseworker/f680/views.py @@ -25,3 +25,20 @@ def get_context_data(self, **kwargs): self.case["data"]["submitted_by"] = " ".join([submitted_by["first_name"], submitted_by["last_name"]]) context_data["case"] = self.case return context_data + + +class CaseRecommendationView(LoginRequiredMixin, CaseworkerMixin, TemplateView): + template_name = "f680/case/recommendation/recommendation.html" + + def setup(self, request, *args, **kwargs): + super().setup(request, *args, **kwargs) + + self.case_id = str(kwargs["pk"]) + self.case = get_case(request, self.case_id) + self.queue_id = kwargs["queue_pk"] + self.queue = get_queue(request, self.queue_id) + + def get_context_data(self, **kwargs): + context_data = super().get_context_data(**kwargs) + context_data["case"] = self.case + return context_data