diff --git a/apps/review/filters.py b/apps/review/filters.py new file mode 100644 index 00000000..4867d1df --- /dev/null +++ b/apps/review/filters.py @@ -0,0 +1,23 @@ +from django.core.validators import EMPTY_VALUES +from django_filters import rest_framework as filters + +from review import models + + +class ReviewFilter(filters.FilterSet): + """Review filter set.""" + + establishment_id = filters.NumberFilter(field_name='object_id', ) + + class Meta: + """Meta class.""" + + model = models.Review + fields = ( + 'establishment_id', + ) + + def by_establishment_id(self, queryset, name, value): + if value not in EMPTY_VALUES: + return queryset.by_establishment_id(value, content_type='establishment') + return queryset diff --git a/apps/review/views/back.py b/apps/review/views/back.py index c6ec6b67..5e38f7ab 100644 --- a/apps/review/views/back.py +++ b/apps/review/views/back.py @@ -1,7 +1,9 @@ +from django_filters.rest_framework import DjangoFilterBackend from rest_framework import generics, permissions from review import models from review import serializers +from review import filters from utils.permissions import IsReviewerManager, IsRestaurantReviewer @@ -10,6 +12,8 @@ class ReviewLstView(generics.ListCreateAPIView): serializer_class = serializers.ReviewBaseSerializer queryset = models.Review.objects.all() permission_classes = [permissions.IsAuthenticatedOrReadOnly, ] + filter_backends = (DjangoFilterBackend,) + filterset_class = filters.ReviewFilter class ReviewRUDView(generics.RetrieveUpdateDestroyAPIView):