add: add seach for expence-income contract list api

This commit is contained in:
behruz-dev
2025-09-13 17:41:12 +05:00
parent 8d7133495a
commit 493460b835
2 changed files with 17 additions and 3 deletions

View File

@@ -1,7 +1,9 @@
from django.utils.timezone import now from django.utils.timezone import now
from django.db.models import Sum, Q, F 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 rest_framework.response import Response
from core.apps.finance.models import ExpenceContract from core.apps.finance.models import ExpenceContract
@@ -41,6 +43,11 @@ class ExpenceContractListApiView(generics.GenericAPIView):
'project_folder', 'project', 'user', 'expence_type', 'counterparty' 'project_folder', 'project', 'user', 'expence_type', 'counterparty'
) )
permission_classes = [HasRolePermission] 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): def get(self, request):
counterparty_id = request.query_params.get('counterparty') counterparty_id = request.query_params.get('counterparty')

View File

@@ -2,7 +2,9 @@ from django.shortcuts import get_object_or_404
from django.db.models import Sum, Q, F from django.db.models import Sum, Q, F
from django.utils.timezone import now 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 rest_framework.response import Response
from core.apps.accounts.permissions.permissions import HasRolePermission from core.apps.accounts.permissions.permissions import HasRolePermission
@@ -42,12 +44,17 @@ class IncomeContractListApiView(generics.GenericAPIView):
'project_folder', 'project', 'income_type', 'counterparty', 'project_folder', 'project', 'income_type', 'counterparty',
) )
permission_classes = [HasRolePermission] 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): def get(self, request):
counterparty_id = request.query_params.get('counterparty') counterparty_id = request.query_params.get('counterparty')
if counterparty_id: if counterparty_id:
self.queryset = self.queryset.filter(counterparty=counterparty_id) self.queryset = self.queryset.filter(counterparty=counterparty_id)
page = self.paginate_queryset(self.queryset) page = self.paginate_queryset(self.queryset)
if page is not None: if page is not None:
serializer = self.serializer_class(page, many=True) serializer = self.serializer_class(page, many=True)