diff --git a/dpdapi/filters.py b/dpdapi/filters.py index 53465fb..afe96eb 100644 --- a/dpdapi/filters.py +++ b/dpdapi/filters.py @@ -1,6 +1,7 @@ import django_filters from dpdapi.models import Alias +from rest_framework.filters import BaseFilterBackend class AliasRegexFilter(django_filters.FilterSet): @@ -8,4 +9,9 @@ class AliasRegexFilter(django_filters.FilterSet): source_regex = django_filters.CharFilter(name="source", lookup_type='iregex') class Meta: - model = Alias \ No newline at end of file + model = Alias + + +class AliasRegexFilterBackend(BaseFilterBackend): + def filter_queryset(self, request, queryset, view): + return AliasRegexFilter(request.query_params, queryset=queryset).qs diff --git a/dpdapi/views.py b/dpdapi/views.py index 6e6a570..9f6f0e3 100644 --- a/dpdapi/views.py +++ b/dpdapi/views.py @@ -5,7 +5,7 @@ from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from rest_framework import status, filters, viewsets -from dpdapi.filters import AliasRegexFilter +from dpdapi.filters import AliasRegexFilterBackend from dpdapi.models import Alias, Domain, User from dpdapi.serializers import AliasSerializer, AliasIdSerializer, DomainSerializer, UserSerializer @@ -18,7 +18,7 @@ class AliasViewSet(viewsets.ModelViewSet): queryset = Alias.objects.all() serializer_class = AliasSerializer permission_classes = [IsAuthenticated] - filter_backends = (filters.DjangoFilterBackend, AliasRegexFilter) + filter_backends = (filters.DjangoFilterBackend, AliasRegexFilterBackend) filter_fields = ('domain', 'domain__name',) @list_route(methods=['post'])