+ DateFromToRangeFilter with _from / _to suffixes

This commit is contained in:
Phil Zhitnikov 2024-05-26 16:17:30 +04:00
parent e5f56c10d0
commit d88eeb790a
2 changed files with 12 additions and 2 deletions

View File

@ -1,5 +1,6 @@
from functools import reduce from functools import reduce
from django_filters import DateFromToRangeFilter as _DateFromToRangeFilter
from rest_framework.fields import DecimalField from rest_framework.fields import DecimalField
@ -11,3 +12,11 @@ class PriceField(DecimalField):
def deep_get(dictionary, *keys, default=None): def deep_get(dictionary, *keys, default=None):
"""Get value from a nested dictionary (JSON)""" """Get value from a nested dictionary (JSON)"""
return reduce(lambda d, key: d.get(key, None) if isinstance(d, dict) else default, keys, dictionary) return reduce(lambda d, key: d.get(key, None) if isinstance(d, dict) else default, keys, dictionary)
class DateFromToRangeFilter(_DateFromToRangeFilter):
""" DateFromToRangeFilter with replaced after/before suffixes to from/to """
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.field.widget.suffixes = ['from', 'to']

View File

@ -1,5 +1,6 @@
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from poizonstore.utils import DateFromToRangeFilter
from .models import Checklist, Gift from .models import Checklist, Gift
@ -18,8 +19,8 @@ class ChecklistFilter(filters.FilterSet):
status = filters.MultipleChoiceFilter(choices=Checklist.Status.CHOICES) status = filters.MultipleChoiceFilter(choices=Checklist.Status.CHOICES)
delivery_code = filters.CharFilter(method='filter_delivery_code') delivery_code = filters.CharFilter(method='filter_delivery_code')
created_at = filters.DateFromToRangeFilter() created_at = DateFromToRangeFilter()
status_updated_at = filters.DateFromToRangeFilter() status_updated_at = DateFromToRangeFilter()
class Meta: class Meta:
model = Checklist model = Checklist