From 25a28755c68261f0df5639a0b14078293ac48805 Mon Sep 17 00:00:00 2001 From: James Graham Date: Mon, 1 Feb 2021 16:50:12 +0000 Subject: [PATCH] feat: use proper datepicker widgets Resolves #58 --- breccia_mapper/settings.py | 1 + people/forms.py | 17 +++-------------- requirements.txt | 1 + 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/breccia_mapper/settings.py b/breccia_mapper/settings.py index 91b5966..75b92c4 100644 --- a/breccia_mapper/settings.py +++ b/breccia_mapper/settings.py @@ -157,6 +157,7 @@ THIRD_PARTY_APPS = [ 'django_select2', 'rest_framework', 'post_office', + 'bootstrap_datepicker_plus', ] FIRST_PARTY_APPS = [ diff --git a/people/forms.py b/people/forms.py index 16e50f2..2adc9d6 100644 --- a/people/forms.py +++ b/people/forms.py @@ -3,25 +3,13 @@ import typing from django import forms -from django.forms.widgets import SelectDateWidget -from django.utils import timezone +from bootstrap_datepicker_plus import DatePickerInput from django_select2.forms import ModelSelect2Widget, Select2Widget, Select2MultipleWidget from . import models -def get_date_year_range() -> typing.Iterable[int]: - """ - Get sensible year range for SelectDateWidgets in the past. - - By default these widgets show 10 years in the future. - """ - num_years_display = 60 - this_year = timezone.datetime.now().year - return range(this_year, this_year - num_years_display, -1) - - class OrganisationForm(forms.ModelForm): """Form for creating / updating an instance of :class:`Organisation`.""" class Meta: @@ -100,6 +88,7 @@ class PersonAnswerSetForm(forms.ModelForm, DynamicAnswerSetBase): widgets = { 'nationality': Select2Widget(), 'country_of_residence': Select2Widget(), + 'organisation_started_date': DatePickerInput(format='%Y-%m-%d'), 'themes': Select2MultipleWidget(), 'latitude': forms.HiddenInput, 'longitude': forms.HiddenInput, @@ -196,5 +185,5 @@ class NetworkFilterForm(DynamicAnswerSetBase): # Add date field to select relationships at a particular point in time self.fields['date'] = forms.DateField( required=False, - widget=SelectDateWidget(years=get_date_year_range()), + widget=DatePickerInput(format='%Y-%m-%d'), help_text='Show relationships as they were on this date') diff --git a/requirements.txt b/requirements.txt index 2877175..3f1e283 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,7 @@ dj-database-url==0.5.0 Django==2.2.10 django-appconf==1.0.3 django-bootstrap4==1.1.1 +django-bootstrap-datepicker-plus==3.0.5 django-constance==2.6.0 django-countries==5.5 django-dbbackup==3.2.0