Add single tag filter support to core views

This commit is contained in:
Christopher C. Wells 2022-04-16 13:42:29 -07:00
parent 50339e1c71
commit 09e0853067
2 changed files with 94 additions and 12 deletions

82
core/filters.py Normal file
View File

@ -0,0 +1,82 @@
# -*- coding: utf-8 -*-
from django.utils.translation import gettext as _
import django_filters
from core import models
class TagFilter(django_filters.FilterSet):
tag = django_filters.ModelChoiceFilter(
label=_("Tag"),
field_name="tags__slug",
to_field_name="slug",
distinct=True,
queryset=models.Tag.objects.all().order_by("name"),
)
class BMIFilter(TagFilter):
class Meta:
model = models.BMI
fields = ["child"]
class DiaperChangeFilter(TagFilter):
class Meta:
model = models.DiaperChange
fields = ["child", "wet", "solid", "color"]
class FeedingFilter(TagFilter):
class Meta:
model = models.Feeding
fields = ["child", "type", "method"]
class HeadCircumferenceFilter(TagFilter):
class Meta:
model = models.HeadCircumference
fields = ["child"]
class HeightFilter(TagFilter):
class Meta:
model = models.Height
fields = ["child"]
class NoteFilter(TagFilter):
class Meta:
model = models.Note
fields = ["child"]
class PumpingFilter(django_filters.FilterSet):
class Meta:
model = models.Pumping
fields = ["child"]
class SleepFilter(TagFilter):
class Meta:
model = models.Sleep
fields = ["child"]
class TemperatureFilter(TagFilter):
class Meta:
model = models.Temperature
fields = ["child"]
class TummyTimeFilter(TagFilter):
class Meta:
model = models.TummyTime
fields = ["child"]
class WeightFilter(TagFilter):
class Meta:
model = models.Weight
fields = ["child"]

View File

@ -12,7 +12,7 @@ from django.views.generic.edit import CreateView, UpdateView, DeleteView, FormVi
from babybuddy.mixins import LoginRequiredMixin, PermissionRequiredMixin from babybuddy.mixins import LoginRequiredMixin, PermissionRequiredMixin
from babybuddy.views import BabyBuddyFilterView from babybuddy.views import BabyBuddyFilterView
from core import forms, models, timeline from core import filters, forms, models, timeline
def _prepare_timeline_context_data(context, date, child=None): def _prepare_timeline_context_data(context, date, child=None):
@ -76,7 +76,7 @@ class BMIList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/bmi_list.html" template_name = "core/bmi_list.html"
permission_required = ("core.view_bmi",) permission_required = ("core.view_bmi",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child",) filterset_class = filters.BMIFilter
class BMIAdd(CoreAddView): class BMIAdd(CoreAddView):
@ -154,7 +154,7 @@ class DiaperChangeList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/diaperchange_list.html" template_name = "core/diaperchange_list.html"
permission_required = ("core.view_diaperchange",) permission_required = ("core.view_diaperchange",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child", "wet", "solid", "color") filterset_class = filters.DiaperChangeFilter
class DiaperChangeAdd(CoreAddView): class DiaperChangeAdd(CoreAddView):
@ -182,7 +182,7 @@ class FeedingList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/feeding_list.html" template_name = "core/feeding_list.html"
permission_required = ("core.view_feeding",) permission_required = ("core.view_feeding",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child", "type", "method") filterset_class = filters.FeedingFilter
class FeedingAdd(CoreAddView): class FeedingAdd(CoreAddView):
@ -210,7 +210,7 @@ class HeadCircumferenceList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/head_circumference_list.html" template_name = "core/head_circumference_list.html"
permission_required = ("core.view_head_circumference",) permission_required = ("core.view_head_circumference",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child",) filterset_class = filters.HeadCircumferenceFilter
class HeadCircumferenceAdd(CoreAddView): class HeadCircumferenceAdd(CoreAddView):
@ -241,7 +241,7 @@ class HeightList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/height_list.html" template_name = "core/height_list.html"
permission_required = ("core.view_height",) permission_required = ("core.view_height",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child",) filterset_class = filters.HeightFilter
class HeightAdd(CoreAddView): class HeightAdd(CoreAddView):
@ -269,7 +269,7 @@ class NoteList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/note_list.html" template_name = "core/note_list.html"
permission_required = ("core.view_note",) permission_required = ("core.view_note",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child",) filterset_class = filters.NoteFilter
class NoteAdd(CoreAddView): class NoteAdd(CoreAddView):
@ -297,7 +297,7 @@ class PumpingList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/pumping_list.html" template_name = "core/pumping_list.html"
permission_required = ("core.view_pumping",) permission_required = ("core.view_pumping",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child",) filterset_class = filters.PumpingFilter
class PumpingAdd(CoreAddView): class PumpingAdd(CoreAddView):
@ -327,7 +327,7 @@ class SleepList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/sleep_list.html" template_name = "core/sleep_list.html"
permission_required = ("core.view_sleep",) permission_required = ("core.view_sleep",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child",) filterset_class = filters.SleepFilter
class SleepAdd(CoreAddView): class SleepAdd(CoreAddView):
@ -355,7 +355,7 @@ class TemperatureList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/temperature_list.html" template_name = "core/temperature_list.html"
permission_required = ("core.view_temperature",) permission_required = ("core.view_temperature",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child",) filterset_class = filters.TemperatureFilter
class TemperatureAdd(CoreAddView): class TemperatureAdd(CoreAddView):
@ -526,7 +526,7 @@ class TummyTimeList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/tummytime_list.html" template_name = "core/tummytime_list.html"
permission_required = ("core.view_tummytime",) permission_required = ("core.view_tummytime",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child",) filterset_class = filters.TummyTimeFilter
class TummyTimeAdd(CoreAddView): class TummyTimeAdd(CoreAddView):
@ -554,7 +554,7 @@ class WeightList(PermissionRequiredMixin, BabyBuddyFilterView):
template_name = "core/weight_list.html" template_name = "core/weight_list.html"
permission_required = ("core.view_weight",) permission_required = ("core.view_weight",)
paginate_by = 10 paginate_by = 10
filterset_fields = ("child",) filterset_class = filters.WeightFilter
class WeightAdd(CoreAddView): class WeightAdd(CoreAddView):