From 39b84b958af15d7925273dc7720cb4a005f21e36 Mon Sep 17 00:00:00 2001 From: Morten Madsen Lyngstad Date: Fri, 4 Jul 2025 10:26:03 +0200 Subject: [PATCH] Refactor SampleLabView to use a dedicated success URL for redirection after status updates --- src/staff/views.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/staff/views.py b/src/staff/views.py index 3582a83c..7eeffb01 100644 --- a/src/staff/views.py +++ b/src/staff/views.py @@ -8,7 +8,7 @@ from django.forms import Form from django.http import HttpRequest, HttpResponse, HttpResponseRedirect from django.shortcuts import get_object_or_404 -from django.urls import reverse_lazy +from django.urls import reverse, reverse_lazy from django.utils.timezone import now from django.utils.translation import gettext as _ from django.views.generic import CreateView, DetailView, TemplateView @@ -309,15 +309,18 @@ def get_context_data(self, **kwargs: Any) -> dict[str, Any]: ) return context + def get_success_url(self) -> str: + return reverse( + "staff:order-extraction-samples-lab", kwargs={"pk": self.get_order().pk} + ) + def post(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: status_name = request.POST.get("status") selected_ids = request.POST.getlist("checked") - redirect_url = self.request.path - if not selected_ids or not status_name: messages.error(request, "No samples or status selected.") - return HttpResponseRedirect(redirect_url) + return HttpResponseRedirect(self.get_success_url()) order = self.get_order() @@ -328,7 +331,7 @@ def post(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: ) except SampleStatus.DoesNotExist: messages.error(request, f"Status '{status_name}' not found.") - return HttpResponseRedirect(redirect_url) + return HttpResponseRedirect(self.get_success_url()) samples = Sample.objects.filter(id__in=selected_ids) @@ -343,7 +346,7 @@ def post(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: messages.success( request, f"{len(samples)} samples updated with status '{status_name}'." ) - return HttpResponseRedirect(redirect_url) + return HttpResponseRedirect(self.get_success_url()) class ManaullyCheckedOrderActionView(SingleObjectMixin, ActionView):