Commit 5fc2da48 authored by okhin's avatar okhin

FIX #184: Add a active_mandates= filter on queries

parent 3abe72b1
Pipeline #743 failed with stage
in 9 minutes and 49 seconds
...@@ -32,6 +32,8 @@ from .models import ( ...@@ -32,6 +32,8 @@ from .models import (
WebSite, WebSite,
) )
from .filters import ActiveMandateQueryFilterBackend
class DefaultWebPagination(pagination.PageNumberPagination): class DefaultWebPagination(pagination.PageNumberPagination):
default_web_page_size = 10 default_web_page_size = 10
...@@ -56,7 +58,8 @@ class RepresentativeViewSet(viewsets.ReadOnlyModelViewSet): ...@@ -56,7 +58,8 @@ class RepresentativeViewSet(viewsets.ReadOnlyModelViewSet):
filters.DjangoFilterBackend, filters.DjangoFilterBackend,
filters.SearchFilter, filters.SearchFilter,
filters.OrderingFilter, filters.OrderingFilter,
RQLFilterBackend RQLFilterBackend,
) )
filter_fields = { filter_fields = {
'active': ['exact'], 'active': ['exact'],
from datetime import datetime
from rest_framework.filters import BaseFilterBackend
from django.db.models import Q
from django.conf import settings
from .models import Mandate
class ActiveMandateQueryFilterBackend(BaseFilterBackend):
A filter which check if a mandate is active for a reprensentative
the parameter used in the query to filter is, by default mandates_active
and it list a list of mandates among which one should be active.
query_param = getattr(settings, 'ACTIVE_MANDATES_QUERY_PARAM', 'active_mandates')
def filter_queryset(self, request, queryset, view):
qs = queryset
if self.query_param in request.GET:
if len(request.GET[self.query_param]):
qs = qs.filter(mandates__in=Mandate.objects.filter(Q(|
return qs
return qs
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment