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
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1from rest_framework import filters
4class VacancyPartnerFilter(filters.BaseFilterBackend):
5 """Allows you to filter by partner pk."""
7 def filter_queryset(self, request, queryset, view):
8 partner = request.query_params.get("partner", None)
10 if partner is not None:
11 queryset = queryset.filter(partner__pk=partner)
13 return queryset
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 ]
27class VacancyCategoryFilter(filters.BaseFilterBackend):
28 """Allows you to filter by category slug."""
30 def filter_queryset(self, request, queryset, view):
31 categories = request.query_params.get("categories", None)
33 if categories:
34 queryset = queryset.filter(categories__slug__in=categories.split(","))
36 return queryset
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 ]