diff --git a/core/apps/finance/filters/expence.py b/core/apps/finance/filters/expence.py new file mode 100644 index 0000000..ebf7d5b --- /dev/null +++ b/core/apps/finance/filters/expence.py @@ -0,0 +1,11 @@ +import django_filters + +from core.apps.finance.models import Expence + + +class ExpenceFilter(django_filters.FilterSet): + class Meta: + model = Expence + fields = [ + 'w' + ] \ No newline at end of file diff --git a/core/apps/finance/filters/income.py b/core/apps/finance/filters/income.py new file mode 100644 index 0000000..eee07ac --- /dev/null +++ b/core/apps/finance/filters/income.py @@ -0,0 +1,11 @@ +import django_filters + +from core.apps.finance.models import Income + + +class IncomeFilter(django_filters.FilterSet): + class Meta: + model = Income + fields = [ + 'payment_type', 'project_folder', 'project', 'user', 'type_income' + ] \ No newline at end of file diff --git a/core/apps/finance/views/expence.py b/core/apps/finance/views/expence.py index 6c3bc0b..0468c67 100644 --- a/core/apps/finance/views/expence.py +++ b/core/apps/finance/views/expence.py @@ -1,9 +1,12 @@ from rest_framework import generics, views, parsers from rest_framework.response import Response +from django_filters.rest_framework.backends import DjangoFilterBackend + from core.apps.accounts.permissions.permissions import HasRolePermission from core.apps.finance.models import Expence from core.apps.finance.serializers import expence as serializers +from core.apps.finance.filters.expence import ExpenceFilter class ExpenceCreateApiView(generics.GenericAPIView): @@ -43,12 +46,14 @@ class ExpenceListApiView(generics.GenericAPIView): 'counterparty', 'expence_type', ) permission_classes = [HasRolePermission] + filter_backends = [DjangoFilterBackend] + filterset_class = ExpenceFilter def get(self, request): cash_transaction_ids = request.query_params.getlist('cash_transaction') if cash_transaction_ids: self.queryset = self.queryset.filter(cash_transaction__in=cash_transaction_ids) - page = self.paginate_queryset(self.queryset) + page = self.paginate_queryset(self.filter_queryset(self.queryset)) if page is not None: serializer = self.serializer_class(page, many=True) return self.get_paginated_response(serializer.data) diff --git a/core/apps/finance/views/income.py b/core/apps/finance/views/income.py index 2372e84..9a9d77d 100644 --- a/core/apps/finance/views/income.py +++ b/core/apps/finance/views/income.py @@ -3,9 +3,12 @@ from django.shortcuts import get_object_or_404 from rest_framework import generics, views, parsers from rest_framework.response import Response +from django_filters.rest_framework.backends import DjangoFilterBackend + from core.apps.finance.models import Income from core.apps.finance.serializers import income as serializers from core.apps.accounts.permissions.permissions import HasRolePermission +from core.apps.finance.filters.income import IncomeFilter class IncomeListApiView(generics.GenericAPIView): @@ -15,12 +18,14 @@ class IncomeListApiView(generics.GenericAPIView): 'user' ) permission_classes = [HasRolePermission] + filter_backends = [DjangoFilterBackend] + filterset_class = IncomeFilter def get(self, request): cash_transaction_ids = request.query_params.getlist('cash_transaction') if cash_transaction_ids: self.queryset = self.queryset.filter(cash_transaction__in=cash_transaction_ids) - page = self.paginate_queryset(self.queryset) + page = self.paginate_queryset(self.filter_queryset(self.queryset)) if page is not None: serializer = self.serializer_class(page, many=True) return self.get_paginated_response(serializer.data)