From 4efbb40714d31ece26d2709ccbd80b83b4234fe4 Mon Sep 17 00:00:00 2001 From: csae8092 Date: Fri, 19 Jul 2024 16:53:48 +0200 Subject: [PATCH] adds date ranger picker widget --- .../range_datepicker_widget.html | 24 +++++++++++++++++++ acdh_django_widgets/widgets.py | 14 +++++++++++ archiv/filters.py | 12 ++++------ archiv/forms.py | 2 +- 4 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 acdh_django_widgets/templates/acdh_django_widgets/range_datepicker_widget.html diff --git a/acdh_django_widgets/templates/acdh_django_widgets/range_datepicker_widget.html b/acdh_django_widgets/templates/acdh_django_widgets/range_datepicker_widget.html new file mode 100644 index 0000000..b439db7 --- /dev/null +++ b/acdh_django_widgets/templates/acdh_django_widgets/range_datepicker_widget.html @@ -0,0 +1,24 @@ +
+ + + +
+
+ + + +
+ + + \ No newline at end of file diff --git a/acdh_django_widgets/widgets.py b/acdh_django_widgets/widgets.py index 2c69c87..059dc20 100644 --- a/acdh_django_widgets/widgets.py +++ b/acdh_django_widgets/widgets.py @@ -1,6 +1,7 @@ import django_filters from django.template.loader import render_to_string from django.utils.safestring import mark_safe +import django_filters.widgets class RangeSliderWidget(django_filters.widgets.RangeWidget): @@ -23,3 +24,16 @@ def render(self, name, value, attrs=None, renderer=None): context = {"name": name, "value": value, "attrs": self.attrs} rendered = render_to_string(self.template_name, context) return mark_safe(rendered) + + +class DateRangePickerWidget(django_filters.widgets.DateRangeWidget): + """Renders date range input fields as date picker fields + """ + template_name = "acdh_django_widgets/range_datepicker_widget.html" + + def render(self, name, value, attrs=None, renderer=None): + if value[0] is None: + value = [self.attrs.get("min", 0), self.attrs.get("max", 100)] + context = {"name": name, "value": value, "attrs": self.attrs} + rendered = render_to_string(self.template_name, context) + return mark_safe(rendered) diff --git a/archiv/filters.py b/archiv/filters.py index b7a3cff..a39b305 100644 --- a/archiv/filters.py +++ b/archiv/filters.py @@ -6,7 +6,7 @@ from django.contrib.postgres.search import SearchRank from django.db.utils import ProgrammingError -from acdh_django_widgets.widgets import RangeSliderWidget +from acdh_django_widgets.widgets import RangeSliderWidget, DateRangePickerWidget from .models import Court from .models import CourtDecission @@ -199,12 +199,10 @@ class CourtDecissionListFilter(django_filters.FilterSet): url="archiv-ac:person-autocomplete", forward=["partial_legal_system"] ), ) - decission_date__year = django_filters.RangeFilter( - help_text="Year of Decision.", + decission_date = django_filters.DateFromToRangeFilter( + help_text=CourtDecission._meta.get_field("decission_date").help_text, label=CourtDecission._meta.get_field("decission_date").verbose_name, - widget=RangeSliderWidget( - attrs={"min": "1900", "max": "2030", "hide_input_fileds": False} - ), + widget=DateRangePickerWidget ) def search_fulltext(self, queryset, field_name, value): @@ -256,7 +254,7 @@ class Meta: "ft_search", "partial_legal_system", "court", - "decission_date__year", + "decission_date", "file_number", "party", "location", diff --git a/archiv/forms.py b/archiv/forms.py index 5fb4175..64e0ae0 100644 --- a/archiv/forms.py +++ b/archiv/forms.py @@ -119,7 +119,7 @@ def __init__(self, *args, **kwargs): "ft_search", "partial_legal_system", "court", - "decission_date__year", + "decission_date", "keyword", "tag", css_id="basic",