update
This commit is contained in:
46
app/views.py
46
app/views.py
@@ -26,7 +26,7 @@ from app.filtersets import PoultryFilterSet, PoultryHatchingFilterSet, Transport
|
||||
PoultryInfoFilterSet, HatchingCalculationsFilterSet, HatchingsFilterSet, TransportingDetailFilterSet, \
|
||||
KillHouseFilterSet, TransportingDetailCustomFilterSet, CustomHatchingsFilterSet, TransportCarcassDetailFilterSet, \
|
||||
DriverFilterSet, GuildsFilterSet, AllProductsTransportFilterSet
|
||||
from app.helper import SSLAdapter, get_hatching_permit_code
|
||||
from app.helper import SSLAdapter, get_hatching_permit_code, normalize_persian_arabic_text
|
||||
from app.models import Poultry, PoultryHatching, TransportingChickenDetail, Hatching, TransportingDetail, KillHouse, \
|
||||
ApkInfo, TransportCarcassDetail, Guilds, Driver, InquiryCredentials, AllProductsTransport, EvacuationDetail, \
|
||||
RasadyarAppInfo
|
||||
@@ -4522,10 +4522,7 @@ class AllProductsTransportViewSet(viewsets.ModelViewSet):
|
||||
filters['product'] = product_type
|
||||
|
||||
if destination_province and destination_province != 'undefined':
|
||||
if destination_province == 'مرکزی':
|
||||
filters['destination_province'] = 'مركزي'
|
||||
else:
|
||||
filters['destination_province'] = destination_province
|
||||
filters['destination_province'] = normalize_persian_arabic_text(destination_province)
|
||||
|
||||
if date1 and date2 and date1 != 'undefined' and date2 != 'undefined':
|
||||
try:
|
||||
@@ -4536,23 +4533,33 @@ class AllProductsTransportViewSet(viewsets.ModelViewSet):
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
transports = AllProductsTransport.objects.filter(**filters).order_by('-date', '-create_date')
|
||||
# بهینهسازی: استفاده از select_related برای جلوگیری از N+1 queries
|
||||
# و اعمال order_by فقط یک بار
|
||||
transports = AllProductsTransport.objects.select_related('hatching').filter(**filters)
|
||||
|
||||
if search and search != 'undefined' and search.strip():
|
||||
transports = transports.filter(
|
||||
build_query(self.filterset_class.Meta.fields, search)
|
||||
)
|
||||
transports = transports.filter(
|
||||
build_query(self.filterset_class.Meta.fields, search)
|
||||
)
|
||||
|
||||
# اعمال order_by فقط یک بار در آخر
|
||||
transports = transports.order_by('-date', '-create_date')
|
||||
|
||||
page_size = request.query_params.get('page_size', None)
|
||||
if page_size:
|
||||
self.pagination_class.page_size = int(page_size)
|
||||
|
||||
page = self.paginate_queryset(transports.order_by('-date', '-create_date'))
|
||||
page = self.paginate_queryset(transports)
|
||||
# بهینهسازی: ایجاد cache برای Province و City در context برای جلوگیری از N+1 queries
|
||||
location_cache = {}
|
||||
context = self.get_serializer_context()
|
||||
context['location_cache'] = location_cache
|
||||
|
||||
if page is not None:
|
||||
serializer = self.get_serializer(page, many=True)
|
||||
serializer = self.get_serializer(page, many=True, context=context)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
|
||||
serializer = self.serializer_class(transports.order_by('-date', '-create_date'), many=True)
|
||||
serializer = self.serializer_class(transports, many=True, context=context)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
@@ -4755,10 +4762,7 @@ class AllProductsTransportDashboardView(APIView):
|
||||
destination_province = request.GET.get('destination_province')
|
||||
kill_house_filterset_class = AllProductsTransportFilterSet
|
||||
if destination_province and destination_province != 'undefined':
|
||||
if destination_province == 'مرکزی':
|
||||
filters['destination_province'] = 'مركزي'
|
||||
else:
|
||||
filters['destination_province'] = destination_province
|
||||
filters['destination_province'] = normalize_persian_arabic_text(destination_province)
|
||||
queryset = AllProductsTransport.objects.filter(**filters)
|
||||
|
||||
if search and search != 'undefined' and search.strip():
|
||||
@@ -4785,10 +4789,7 @@ class AllProductsTransportDashboardView(APIView):
|
||||
# bars = queryset.filter(jihadi_origin__in=kill_house_codes)
|
||||
|
||||
if destination_province and destination_province != 'undefined':
|
||||
if destination_province == 'مرکزی':
|
||||
filters_query['destination_province'] = 'مركزي'
|
||||
else:
|
||||
filters_query['destination_province'] = destination_province
|
||||
filters_query['destination_province'] = normalize_persian_arabic_text(destination_province)
|
||||
bars = queryset.filter(**filters_query)
|
||||
aggregation = bars.aggregate(
|
||||
total=Sum('quantity'),
|
||||
@@ -4850,10 +4851,7 @@ class AllProductsTransportDashboardView(APIView):
|
||||
).order_by('-modify_date')
|
||||
|
||||
if destination_province and destination_province != 'undefined':
|
||||
if destination_province == 'مرکزی':
|
||||
filters_query['destination_province'] = 'مركزي'
|
||||
else:
|
||||
filters_query['destination_province'] = destination_province
|
||||
filters_query['destination_province'] = normalize_persian_arabic_text(destination_province)
|
||||
bars = bars(**filters_query)
|
||||
aggregation = bars.aggregate(
|
||||
total=Sum('quantity'),
|
||||
|
||||
Reference in New Issue
Block a user