diff --git a/generic/templates/generic/partials/filter_bar.html b/generic/templates/generic/partials/filter_bar.html index e30f7d6f..332adbb0 100644 --- a/generic/templates/generic/partials/filter_bar.html +++ b/generic/templates/generic/partials/filter_bar.html @@ -162,4 +162,24 @@ .btn-outline-secondary { color: #e6eef6; border-color: rgba(255,255,255,0.06); } .btn-light { background: #111827; color: #e6eef6; border-color: rgba(255,255,255,0.04); } .filter-card label { color: #e6eef6; } - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/generic/views.py b/generic/views.py index 57a1c38c..ca86f9b9 100644 --- a/generic/views.py +++ b/generic/views.py @@ -43,7 +43,13 @@ from django.views.generic.edit import CreateView, UpdateView, DeleteView from django.views.generic.list import ListView from django.views.generic.detail import DetailView from django_filters.views import FilterView -from django_filters import FilterSet, OrderingFilter, ModelMultipleChoiceFilter +from django_filters import ( + FilterSet, + OrderingFilter, + ModelMultipleChoiceFilter, + DateFromToRangeFilter, +) +from django_filters.widgets import DateRangeWidget from django_tables2.views import SingleTableMixin from reversion.views import RevisionMixin from atlas.models import CaseCollection, CaseDetail @@ -733,6 +739,18 @@ class ExamViews(View, LoginRequiredMixin): fields=(("name", "name"), ("exam_mode", "exam_mode")) ) + # Allow filtering by start/end date ranges (render as paired date inputs) + start_date = DateFromToRangeFilter( + field_name="start_date", + label="Start date", + widget=DateRangeWidget(attrs={"class": "datepicker", "autocomplete": "off", "placeholder": "dd/mm/yyyy"}), + ) + end_date = DateFromToRangeFilter( + field_name="end_date", + label="End date", + widget=DateRangeWidget(attrs={"class": "datepicker", "autocomplete": "off", "placeholder": "dd/mm/yyyy"}), + ) + class Meta: model = exam fields = {