diff --git a/core/apps/finance/views/expence_contract.py b/core/apps/finance/views/expence_contract.py index 35e14c3..e30881a 100644 --- a/core/apps/finance/views/expence_contract.py +++ b/core/apps/finance/views/expence_contract.py @@ -1,7 +1,9 @@ from django.utils.timezone import now from django.db.models import Sum, Q, F -from rest_framework import generics, views +from django_filters.rest_framework.backends import DjangoFilterBackend + +from rest_framework import generics, views, filters from rest_framework.response import Response from core.apps.finance.models import ExpenceContract @@ -41,6 +43,11 @@ class ExpenceContractListApiView(generics.GenericAPIView): 'project_folder', 'project', 'user', 'expence_type', 'counterparty' ) permission_classes = [HasRolePermission] + filter_backends = [DjangoFilterBackend, filters.SearchFilter] + search_fields = [ + 'user__full_name', 'project_folder__name', 'project__name', 'expence_type__name', + 'counterparty__name' + ] def get(self, request): counterparty_id = request.query_params.get('counterparty') diff --git a/core/apps/finance/views/income_contract.py b/core/apps/finance/views/income_contract.py index b64bd09..f3860bb 100644 --- a/core/apps/finance/views/income_contract.py +++ b/core/apps/finance/views/income_contract.py @@ -2,7 +2,9 @@ from django.shortcuts import get_object_or_404 from django.db.models import Sum, Q, F from django.utils.timezone import now -from rest_framework import generics, views +from django_filters.rest_framework.backends import DjangoFilterBackend + +from rest_framework import generics, views, filters from rest_framework.response import Response from core.apps.accounts.permissions.permissions import HasRolePermission @@ -42,12 +44,17 @@ class IncomeContractListApiView(generics.GenericAPIView): 'project_folder', 'project', 'income_type', 'counterparty', ) permission_classes = [HasRolePermission] + filter_backends = [DjangoFilterBackend, filters.SearchFilter] + search_fields = [ + 'user__full_name', 'project_folder__name', 'project__name', 'expence_type__name', + 'counterparty__name' + ] def get(self, request): counterparty_id = request.query_params.get('counterparty') if counterparty_id: self.queryset = self.queryset.filter(counterparty=counterparty_id) - + page = self.paginate_queryset(self.queryset) if page is not None: serializer = self.serializer_class(page, many=True)