diff --git a/src/signals/forms.py b/src/signals/forms.py index 51ff46a..a4a5123 100644 --- a/src/signals/forms.py +++ b/src/signals/forms.py @@ -7,6 +7,7 @@ Pathogen, Signal, TimeLabelChoices, + ActiveChoices ) MULTI_SELECT_TOOLTIP_MESSAGE = _('Hold down “Control”, or “Command” on a Mac, to select more than one.') @@ -26,7 +27,7 @@ class SignalFilterForm(forms.ModelForm): ) search = forms.CharField(min_length=3) pathogen = forms.ModelChoiceField(queryset=Pathogen.objects.all(), empty_label='---------') - active = forms.NullBooleanField(initial=None) + active = forms.TypedMultipleChoiceField(choices=ActiveChoices.choices, coerce=bool, widget=forms.CheckboxSelectMultiple()) format_type = forms.ChoiceField(choices=[('', '---------')] + FormatChoices.choices) source = forms.ModelChoiceField(queryset=SourceSubdivision.objects.all(), empty_label='---------') time_label = forms.ChoiceField(choices=[('', '---------')] + TimeLabelChoices.choices, label=_('Temporal Resolution')) @@ -54,7 +55,6 @@ class Meta: }), 'search': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Enter search term'}), 'pathogen': forms.Select(attrs={'class': 'form-select'}), - 'active': forms.NullBooleanSelect(attrs={'class': 'form-check mt-3', 'label': "Test "},), 'available_geography': forms.CheckboxSelectMultiple(attrs={ 'class': 'form-select', 'data-bs-toggle': 'tooltip', diff --git a/src/signals/models.py b/src/signals/models.py index ab09199..fbbed86 100644 --- a/src/signals/models.py +++ b/src/signals/models.py @@ -41,6 +41,14 @@ class HighValuesAreChoices(models.TextChoices): NEUTRAL = 'neutral', _('Neutral') +class ActiveChoices(models.TextChoices): + """ + A class representing choices for active signals. + """ + ACTIVE = True, _('Active') + HISTORICAL = False, _('Historical') + + class SignalCategory(TimeStampedModel): """ A model representing a signal category. diff --git a/src/signals/views.py b/src/signals/views.py index f63ddbc..daff707 100644 --- a/src/signals/views.py +++ b/src/signals/views.py @@ -40,7 +40,9 @@ def get_url_params(self): "pathogen": int(self.request.GET.get("pathogen")) if self.request.GET.get("pathogen") else "", - "active": self.request.GET.get("active", "unknown"), + "active": [el for el in self.request.GET._getlist("active")] + if self.request.GET.get("active") + else [True, False], "available_geography": [ int(el) for el in self.request.GET._getlist("available_geography") ]