Skip to content

Commit

Permalink
basic filters for admin
Browse files Browse the repository at this point in the history
  • Loading branch information
nicokant committed Jan 27, 2025
1 parent a6d2d2d commit afb2241
Show file tree
Hide file tree
Showing 6 changed files with 115 additions and 7 deletions.
16 changes: 16 additions & 0 deletions src/config/autocomplete.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
from apps.users.autocomplete import UserAutocomplete
from django.urls import path
from genlab_bestilling.autocomplete import (
AnalysisOrderAutocomplete,
EquipmentAutocomplete,
ExtractionOrderAutocomplete,
GenrequestAutocomplete,
LocationAutocomplete,
MarkerAutocomplete,
OrderAutocomplete,
SampleTypeAutocomplete,
SpeciesAutocomplete,
)
Expand All @@ -14,4 +20,14 @@
path("project/", ProjectAutocomplete.as_view(), name="project"),
path("marker/", MarkerAutocomplete.as_view(), name="marker"),
path("user/", UserAutocomplete.as_view(), name="user"),
path("genrequest/", GenrequestAutocomplete.as_view(), name="genrequest"),
path("location/", LocationAutocomplete.as_view(), name="location"),
path("order/", OrderAutocomplete.as_view(), name="order"),
path("order/equipment/", EquipmentAutocomplete.as_view(), name="equipment-order"),
path("order/analysis/", AnalysisOrderAutocomplete.as_view(), name="analysis-order"),
path(
"order/extraction/",
ExtractionOrderAutocomplete.as_view(),
name="extraction-order",
),
]
36 changes: 35 additions & 1 deletion src/genlab_bestilling/autocomplete.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
from dal import autocomplete

from .models import Marker, SampleType, Species
from .models import (
AnalysisOrder,
EquipmentOrder,
ExtractionOrder,
Genrequest,
Location,
Marker,
Order,
SampleType,
Species,
)


class SpeciesAutocomplete(autocomplete.Select2QuerySetView):
Expand All @@ -13,3 +23,27 @@ class SampleTypeAutocomplete(autocomplete.Select2QuerySetView):

class MarkerAutocomplete(autocomplete.Select2QuerySetView):
model = Marker


class GenrequestAutocomplete(autocomplete.Select2QuerySetView):
model = Genrequest


class LocationAutocomplete(autocomplete.Select2QuerySetView):
model = Location


class OrderAutocomplete(autocomplete.Select2QuerySetView):
model = Order


class EquipmentAutocomplete(autocomplete.Select2QuerySetView):
model = EquipmentOrder


class AnalysisOrderAutocomplete(autocomplete.Select2QuerySetView):
model = AnalysisOrder


class ExtractionOrderAutocomplete(autocomplete.Select2QuerySetView):
model = ExtractionOrder
52 changes: 52 additions & 0 deletions src/genlab_bestilling/staff/filters.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
import django_filters as filters
from dal import autocomplete

from ..models import AnalysisOrder, ExtractionPlate, Sample, SampleMarkerAnalysis


class AnalysisOrderFilter(filters.FilterSet):
def __init__(self, data=None, queryset=None, *, request=None, prefix=None):
super().__init__(data, queryset, request=request, prefix=prefix)
self.filters["genrequest__project"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:project"
)
self.filters["genrequest"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:genrequest"
)

class Meta:
model = AnalysisOrder
fields = [
Expand All @@ -15,6 +25,18 @@ class Meta:


class OrderSampleFilter(filters.FilterSet):
def __init__(self, data=None, queryset=None, *, request=None, prefix=None):
super().__init__(data, queryset, request=request, prefix=prefix)
self.filters["species"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:species"
)
self.filters["type"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:sample-type"
)
self.filters["location"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:location"
)

class Meta:
model = Sample
fields = [
Expand All @@ -33,6 +55,24 @@ class Meta:


class SampleMarkerOrderFilter(filters.FilterSet):
def __init__(self, data=None, queryset=None, *, request=None, prefix=None):
super().__init__(data, queryset, request=request, prefix=prefix)
self.filters["sample__species"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:species"
)
self.filters["sample__type"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:sample-type"
)
self.filters["sample__location"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:location"
)
self.filters["marker"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:marker"
)
self.filters["order"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:analysis-order"
)

class Meta:
model = SampleMarkerAnalysis
fields = [
Expand All @@ -50,6 +90,18 @@ class Meta:


class SampleFilter(filters.FilterSet):
def __init__(self, data=None, queryset=None, *, request=None, prefix=None):
super().__init__(data, queryset, request=request, prefix=prefix)
self.filters["species"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:species"
)
self.filters["type"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:sample-type"
)
self.filters["location"].extra["widget"] = autocomplete.ModelSelect2(
url="autocomplete:location"
)

class Meta:
model = Sample
fields = [
Expand Down
9 changes: 7 additions & 2 deletions src/genlab_bestilling/staff/templates/staff/base_filter.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% extends "staff/base.html" %}
{% load crispy_forms_tags %}
{% load crispy_forms_tags static %}
{% load render_table from django_tables2 %}

{% block content %}
Expand All @@ -10,9 +10,14 @@ <h3 class="text-4xl mb-5">{% block page-title %}{% endblock page-title %}</h3>
<div class="flex flex-wrap gap-4">
{{ filter.form | crispy }}
</div>
{% csrf_token %}
<button class="btn bg-primary" type="submit">Search</button>
</form>

{% render_table table %}
{% endblock %}

{% block body_javascript %}
{{ block.super }}
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>
{{ filter.form.media }}
{% endblock body_javascript %}
5 changes: 5 additions & 0 deletions src/genlab_bestilling/staff/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ def get_queryset(self):
.select_related(
"genrequest",
"polymorphic_ctype",
"genrequest__samples_owner",
"genrequest__project",
"genrequest__area",
)
Expand All @@ -78,10 +79,12 @@ def get_queryset(self):
.get_queryset()
.select_related(
"genrequest",
"genrequest__samples_owner",
"polymorphic_ctype",
"genrequest__project",
"genrequest__area",
)
.prefetch_related("species", "sample_types")
)


Expand Down Expand Up @@ -112,9 +115,11 @@ def get_queryset(self):
.select_related(
"genrequest",
"polymorphic_ctype",
"genrequest__samples_owner",
"genrequest__project",
"genrequest__area",
)
.prefetch_related("sample_types")
)


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,5 @@ <h3 class="text-4xl mb-5">{% block page-title %}{% endblock page-title %}</h3>
{% block body_javascript %}
{{ block.super }}
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>

<!-- comment -->
{{ filter.form.media }}
<!-- end comment -->

{% endblock body_javascript %}

0 comments on commit afb2241

Please sign in to comment.