From 2a42d7df7f5ecd3a205e58cf94c2cea3216c4710 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Thu, 28 Aug 2025 09:59:46 +0500 Subject: [PATCH] add: add filters folder to wherehouse app and add filter to InvalidProductListApiView class --- core/apps/wherehouse/filters/__init__.py | 0 core/apps/wherehouse/filters/invalid_product.py | 12 ++++++++++++ core/apps/wherehouse/views/invalid_product.py | 11 ++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 core/apps/wherehouse/filters/__init__.py create mode 100644 core/apps/wherehouse/filters/invalid_product.py diff --git a/core/apps/wherehouse/filters/__init__.py b/core/apps/wherehouse/filters/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/apps/wherehouse/filters/invalid_product.py b/core/apps/wherehouse/filters/invalid_product.py new file mode 100644 index 0000000..918f5f1 --- /dev/null +++ b/core/apps/wherehouse/filters/invalid_product.py @@ -0,0 +1,12 @@ +import django_filters + +from core.apps.wherehouse.models import InvalidProduct + + +class InvalidProductFilter(django_filters.FilterSet): + class Meta: + model = InvalidProduct + fields = [ + 'wherehouse', 'project_folder', 'status', 'invalid_status', + 'witnesses', 'expiry_date' + ] \ No newline at end of file diff --git a/core/apps/wherehouse/views/invalid_product.py b/core/apps/wherehouse/views/invalid_product.py index d041e1a..a6e71f4 100644 --- a/core/apps/wherehouse/views/invalid_product.py +++ b/core/apps/wherehouse/views/invalid_product.py @@ -1,11 +1,18 @@ +# django from django.shortcuts import get_object_or_404 +# django filter +from django_filters.rest_framework.backends import DjangoFilterBackend +# rest framework from rest_framework import generics, parsers, views from rest_framework.response import Response +# accounts from core.apps.accounts.permissions.permissions import HasRolePermission +# wherehouse from core.apps.wherehouse.serializers import invalid_product as serializers from core.apps.wherehouse.models import InvalidProduct +from core.apps.wherehouse.filters.invalid_product import InvalidProductFilter class InvalidProductCreateApiView(generics.GenericAPIView): @@ -36,9 +43,11 @@ class InvalidProductListApiView(generics.GenericAPIView): ).prefetch_related('witnesses') permission_classes = [HasRolePermission] required_permissions = [] + filter_backends = [DjangoFilterBackend] + filterset_class = InvalidProductFilter def get(self, request): - invalid_products = self.queryset + invalid_products = self.filter_queryset(self.queryset) page = self.paginate_queryset(invalid_products) if page is not None: serializer = self.serializer_class(page, many=True)