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.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')

View File

@@ -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)