From d3ce9f438c31cca243d7145cd2d0376fbc18cc77 Mon Sep 17 00:00:00 2001 From: aastabk Date: Thu, 17 Jul 2025 14:29:31 +0200 Subject: [PATCH] Added filtering on types for extraction order --- src/staff/filters.py | 43 +++++++++++++++++++++++++++++++++++++++++++ src/staff/views.py | 3 ++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/staff/filters.py b/src/staff/filters.py index 1b4e14e5..f5d09d43 100644 --- a/src/staff/filters.py +++ b/src/staff/filters.py @@ -9,6 +9,7 @@ from genlab_bestilling.models import ( AnalysisOrder, + ExtractionOrder, ExtractionPlate, Order, Sample, @@ -50,6 +51,48 @@ def __init__(self, *args, **kwargs): ) +class ExtractionOrderFilter(filters.FilterSet): + class Meta: + model = ExtractionOrder + fields = ["id", "status", "genrequest__area", "sample_types"] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.filters["id"].field.label = "Order ID" + self.filters["id"].field.widget = forms.TextInput( + attrs={ + "class": "bg-white border border-gray-300 rounded-lg py-2 px-4 w-full text-gray-700", # noqa: E501 + "placeholder": "Enter Order ID", + } + ) + + self.filters["status"].field.label = "Order Status" + self.filters["status"].field.choices = Order.OrderStatus.choices + self.filters["status"].field.widget = autocomplete.ListSelect2( + url="autocomplete:order-status", + attrs={ + "class": "w-full", + }, + ) + + self.filters["genrequest__area"].field.label = "Area" + self.filters["genrequest__area"].field.widget = autocomplete.ModelSelect2( + url="autocomplete:area", + attrs={ + "class": "w-full", + }, + ) + + self.filters["sample_types"].field.label = "Sample types" + self.filters["sample_types"].field.widget = autocomplete.ModelSelect2Multiple( + url="autocomplete:sample-type", + attrs={ + "class": "w-full", + }, + ) + + class OrderSampleFilter(filters.FilterSet): genlab_id = CharFilter( label="GenlabID", diff --git a/src/staff/views.py b/src/staff/views.py index 25aad648..65da18e6 100644 --- a/src/staff/views.py +++ b/src/staff/views.py @@ -35,6 +35,7 @@ from .filters import ( AnalysisOrderFilter, + ExtractionOrderFilter, ExtractionPlateFilter, OrderSampleFilter, SampleFilter, @@ -114,7 +115,7 @@ def get_queryset(self) -> models.QuerySet[AnalysisOrder]: class ExtractionOrderListView(StaffMixin, SingleTableMixin, FilterView): model = ExtractionOrder table_class = ExtractionOrderTable - filterset_class = AnalysisOrderFilter + filterset_class = ExtractionOrderFilter def get_queryset(self) -> models.QuerySet[ExtractionOrder]: return (