Coverage for website/partners/api/v2/filters.py: 33.33%

17 statements  

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

1from rest_framework import filters 

2 

3 

4class VacancyPartnerFilter(filters.BaseFilterBackend): 

5 """Allows you to filter by partner pk.""" 

6 

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

8 partner = request.query_params.get("partner", None) 

9 

10 if partner is not None: 

11 queryset = queryset.filter(partner__pk=partner) 

12 

13 return queryset 

14 

15 def get_schema_operation_parameters(self, view): 

16 return [ 

17 { 

18 "name": "partner", 

19 "required": False, 

20 "in": "query", 

21 "description": "Filter by partner id", 

22 "schema": {"type": "number"}, 

23 } 

24 ] 

25 

26 

27class VacancyCategoryFilter(filters.BaseFilterBackend): 

28 """Allows you to filter by category slug.""" 

29 

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

31 categories = request.query_params.get("categories", None) 

32 

33 if categories: 

34 queryset = queryset.filter(categories__slug__in=categories.split(",")) 

35 

36 return queryset 

37 

38 def get_schema_operation_parameters(self, view): 

39 return [ 

40 { 

41 "name": "categories", 

42 "required": False, 

43 "in": "query", 

44 "description": "Filter by category slugs, accepts a comma separated list. Return vacancies that have at least one of the specified categories", 

45 "schema": {"type": "string"}, 

46 } 

47 ]