add: add search and filter to stock_movemend_list_api

This commit is contained in:
behruz-dev
2025-08-29 10:02:08 +05:00
parent a6f479d7b7
commit 7c31a393f2
3 changed files with 27 additions and 4 deletions

View File

@@ -0,0 +1,11 @@
import django_filters
from core.apps.wherehouse.models.stock_movemend import StockMovemend
class StockMovemendFilter(django_filters.FilterSet):
class Meta:
model = StockMovemend
fields = [
'wherehouse_to', 'wherehouse_from', 'project_folder', 'project', 'movemend_type', 'date'
]

View File

@@ -21,7 +21,7 @@ class StockMovmendProductSerializer(serializers.Serializer):
class StockMovmendCreateSerializer(serializers.Serializer):
products = StockMovmendProductSerializer(many=True)
project_folder_id = serializers.UUIDField()
project_folder_id = serializers.UUIDField(required=False)
project_id = serializers.UUIDField(required=False)
wherehouse_to_id = serializers.UUIDField()
wherehouse_from_id = serializers.UUIDField()
@@ -107,7 +107,7 @@ class StockMovemendListSerializer(serializers.ModelSerializer):
model = StockMovemend
fields = [
'id', 'number', 'wherehouse_to', 'wherehouse_from', 'recipient', 'project_folder',
'project', 'movemend_type', 'date', 'comment', 'file', 'movmend_products'
'project', 'movemend_type', 'date', 'comment', 'movmend_products'
]
def get_wherehouse_to(self, obj):

View File

@@ -1,8 +1,14 @@
from rest_framework import generics, parsers
from rest_framework import generics, parsers, filters
from rest_framework.response import Response
# django-filter
from django_filters.rest_framework.backends import DjangoFilterBackend
# warehouse
from core.apps.wherehouse.serializers import stock_movmend as serializers
from core.apps.wherehouse.models import StockMovemend, StockMovmendProduct
from core.apps.wherehouse.filters.stock_movemend import StockMovemendFilter
# accounts
from core.apps.accounts.permissions.permissions import HasRolePermission
@@ -32,9 +38,15 @@ class StockMovemendListApiView(generics.GenericAPIView):
).prefetch_related('movmend_products')
permission_classes = [HasRolePermission]
required_permissions = []
filter_backends = [DjangoFilterBackend, filters.SearchFilter]
filterset_class = StockMovemendFilter
search_fields = [
'number', 'wherehouse_to__name', 'wherehouse_from__name', 'project_folder__name',
'project__name', 'movemend_type', 'date', 'comment'
]
def get(self, request):
queryset = self.queryset
queryset = self.filter_queryset(self.queryset)
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.serializer_class(page, many=True)