Coverage for website/pizzas/api/v2/filters.py: 31.25%

12 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1from rest_framework import filters 

2 

3from utils.snippets import extract_date_range 

4 

5 

6class FoodEventDateFilterBackend(filters.BaseFilterBackend): 

7 """Allows you to filter by event start/end dates.""" 

8 

9 def filter_queryset(self, request, queryset, view): 

10 start, end = extract_date_range(request, allow_empty=True) 

11 

12 if start is not None: 

13 queryset = queryset.filter(end__gte=start) 

14 if end is not None: 

15 queryset = queryset.filter(start__lte=end) 

16 

17 return queryset 

18 

19 def get_schema_operation_parameters(self, view): 

20 return [ 

21 { 

22 "name": "start", 

23 "required": False, 

24 "in": "query", 

25 "description": "Filter events by ISO date, starting with this parameter (i.e. 2021-03-30T04:20:00) where `event.end >= value`", 

26 "schema": { 

27 "type": "string", 

28 }, 

29 }, 

30 { 

31 "name": "end", 

32 "required": False, 

33 "in": "query", 

34 "description": "Filter events by ISO date, ending with this parameter (i.e. 2021-05-16T13:37:00) where `event.start <= value`", 

35 "schema": { 

36 "type": "string", 

37 }, 

38 }, 

39 ]