From 55fdf8f60ded471bda517814cf4b958acf2e79d8 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Sun, 18 Nov 2018 15:29:51 +0200 Subject: [PATCH] Add filtering for Event and Signup ViewSets --- requirements.txt | 3 ++- sikweb/base.py | 4 ++++ webapp/views.py | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8d18fcf..4865fcd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -35,4 +35,5 @@ pyexcel==0.5.8 pyexcel-xlsx==0.5.5 django-import-export==0.7.0 openpyxl==2.4.11 -django-app-namespace-template-loader==0.4.1 \ No newline at end of file +django-app-namespace-template-loader==0.4.1 +django-filter==2.0.0 \ No newline at end of file diff --git a/sikweb/base.py b/sikweb/base.py index 460f759..1619797 100644 --- a/sikweb/base.py +++ b/sikweb/base.py @@ -103,6 +103,7 @@ INSTALLED_APPS = [ 'auditlog', 'phonenumber_field', 'import_export', + 'django_filters', ] IMPORT_EXPORT_USE_TRANSACTIONS = True @@ -234,6 +235,9 @@ REST_FRAMEWORK = { }, 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 'PAGE_SIZE': 10, + 'DEFAULT_FILTER_BACKENDS': ( + 'django_filters.rest_framework.DjangoFilterBackend', + ), } # Email settings (tested working with gmail) diff --git a/webapp/views.py b/webapp/views.py index 6f9c02b..04cdf71 100644 --- a/webapp/views.py +++ b/webapp/views.py @@ -13,6 +13,8 @@ from rest_framework import viewsets, routers from rest_framework.permissions import IsAuthenticatedOrReadOnly from rest_framework.response import Response from rest_framework.reverse import reverse +from django_filters import rest_framework as filters +from rest_framework.filters import SearchFilter, OrderingFilter # import logging # import requests @@ -33,18 +35,27 @@ class EventViewSet(viewsets.ModelViewSet): queryset = Event.objects.all() serializer_class = EventSerializer permission_classes = [IsAuthenticatedOrReadOnly] + filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter) + filter_fields = '__all__' + search_fields = '__all__' class SignupFormViewSet(viewsets.ModelViewSet): queryset = SignupForm.objects.all() serializer_class = SignupFormSerializer permission_classes = [IsAuthenticatedOrReadOnly] + filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter) + filter_fields = '__all__' + search_fields = '__all__' class SignupViewSet(viewsets.ModelViewSet): queryset = Signup.objects.all() serializer_class = SignupSerializer permission_classes = [] + filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter) + filter_fields = '__all__' + search_fields = '__all__' class SavedQuestionsViewSet(viewsets.ModelViewSet): @@ -57,6 +68,9 @@ class FeedViewSet(viewsets.ModelViewSet): queryset = Feed.objects.all() serializer_class = FeedSerializer permission_classes = [] + filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter) + filter_fields = '__all__' + search_fields = '__all__' class ContactsViewSet(viewsets.ReadOnlyModelViewSet):