From 264552d37287a336cf065b99e0806b85e0fdb185 Mon Sep 17 00:00:00 2001 From: BrainIsDead Date: Wed, 29 May 2024 16:43:09 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20src/signal=5Fdocume?= =?UTF-8?q?ntation/settings.py=20->=20Added=20strtobool=20import=20?= =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20src/signals/filters.py=20->=20Added=20b?= =?UTF-8?q?ase=5Fsignal=20filter=20=F0=9F=9B=A0=EF=B8=8F=20src/signals/for?= =?UTF-8?q?ms.py=20->=20Added=20base=5Fsignal=20field=20=F0=9F=9B=A0?= =?UTF-8?q?=EF=B8=8F=20src/signals/views.py=20->=20Added=20base=5Fsignal?= =?UTF-8?q?=20to=20URL=20params=20=F0=9F=9B=A0=EF=B8=8F=20src/templates/si?= =?UTF-8?q?gnals/signals.html=20->=20Added=20base=5Fsignal=20accordion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/signal_documentation/settings.py | 1 + src/signals/filters.py | 2 ++ src/signals/forms.py | 2 ++ src/signals/views.py | 3 ++- src/templates/signals/signals.html | 39 ++++++++++++++++++++++++++++ 5 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/signal_documentation/settings.py b/src/signal_documentation/settings.py index 1f9a149..351a8c9 100644 --- a/src/signal_documentation/settings.py +++ b/src/signal_documentation/settings.py @@ -11,6 +11,7 @@ """ import os import sys +from distutils.util import strtobool from pathlib import Path from typing import Any diff --git a/src/signals/filters.py b/src/signals/filters.py index 5dab870..3777f74 100644 --- a/src/signals/filters.py +++ b/src/signals/filters.py @@ -43,6 +43,7 @@ class SignalFilter(django_filters.FilterSet): format_type = django_filters.MultipleChoiceFilter(choices=FormatChoices.choices) source = django_filters.ModelMultipleChoiceFilter(queryset=SourceSubdivision.objects.all()) time_type = django_filters.MultipleChoiceFilter(choices=TimeTypeChoices.choices) + base_signal = django_filters.BooleanFilter(lookup_expr='isnull', field_name='base_for') class Meta: model = Signal @@ -57,6 +58,7 @@ class Meta: 'format_type', 'source', 'time_type', + 'base_signal', ] def filter_search(self, queryset, name, value) -> Any: diff --git a/src/signals/forms.py b/src/signals/forms.py index 8acb353..040689d 100644 --- a/src/signals/forms.py +++ b/src/signals/forms.py @@ -30,6 +30,7 @@ class SignalFilterForm(forms.ModelForm): format_type = forms.ChoiceField(choices=FormatChoices.choices, widget=forms.CheckboxSelectMultiple()) source = forms.ModelMultipleChoiceField(queryset=SourceSubdivision.objects.all(), widget=forms.CheckboxSelectMultiple()) time_type = forms.ChoiceField(choices=TimeTypeChoices.choices, widget=forms.CheckboxSelectMultiple()) + base_signal = forms.ChoiceField(choices=[('', _('All')), (True, _('Yes')), (False, _('No'))], required=False, widget=forms.RadioSelect()) class Meta: model = Signal @@ -79,6 +80,7 @@ class Meta: 'data-bs-toggle': 'tooltip', 'data-bs-placement': 'bottom', }), + } def __init__(self, *args, **kwargs) -> None: diff --git a/src/signals/views.py b/src/signals/views.py index 41a97f0..af80898 100644 --- a/src/signals/views.py +++ b/src/signals/views.py @@ -53,7 +53,8 @@ def get_url_params(self): else None, "format_type": [el for el in self.request.GET.getlist("format_type")], "source": [int(el) for el in self.request.GET.getlist("source")], - "time_type": [el for el in self.request.GET.getlist("time_type")] + "time_type": [el for el in self.request.GET.getlist("time_type")], + "base_signal": self.request.GET.get("base_signal"), } url_params_str = "" for param_name, param_value in url_params_dict.items(): diff --git a/src/templates/signals/signals.html b/src/templates/signals/signals.html index 66c4de0..bb8aac2 100644 --- a/src/templates/signals/signals.html +++ b/src/templates/signals/signals.html @@ -212,6 +212,27 @@

+
+

+ +

+ {% if form.base_signal.value %} +
+ {% else %} +
+ {% endif %} +
+ {{ form.base_signal|as_crispy_field }} +
+
+
@@ -456,6 +477,24 @@
+