forked from erp-dev/erp
feat: shipment change && version modelize
This commit is contained in:
@@ -10,7 +10,7 @@ from rest_framework.permissions import BasePermission
|
||||
from rest_framework.permissions import DjangoModelPermissions
|
||||
from rest_framework.parsers import MultiPartParser, FormParser, JSONParser
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db.models import CharField, Exists, OuterRef, Prefetch, Subquery
|
||||
from django.db.models import CharField, Exists, F, OuterRef, Prefetch, Subquery
|
||||
from django.db.models.functions import Cast, Coalesce
|
||||
from django.views.decorators.cache import cache_page
|
||||
from django.views.decorators.http import condition
|
||||
@@ -38,6 +38,23 @@ from .serializers import (
|
||||
from .mixins import CustomerVisibilityFilterMixin
|
||||
|
||||
|
||||
class PrintingOrderOrderingFilter(filters.OrderingFilter):
|
||||
def filter_queryset(self, request, queryset, view):
|
||||
ordering = self.get_ordering(request, queryset, view)
|
||||
if not ordering:
|
||||
return queryset
|
||||
|
||||
expressions = []
|
||||
for field in ordering:
|
||||
if field == "kd_riqi":
|
||||
expressions.append(F("kd_riqi").asc(nulls_last=True))
|
||||
elif field == "-kd_riqi":
|
||||
expressions.append(F("kd_riqi").desc(nulls_last=True))
|
||||
else:
|
||||
expressions.append(field)
|
||||
return queryset.order_by(*expressions)
|
||||
|
||||
|
||||
class IsPrintingFactory(BasePermission):
|
||||
"""自定义权限类,允许印染工厂用户访问"""
|
||||
|
||||
@@ -276,7 +293,7 @@ class PrintingOrderViewSet(CustomerVisibilityFilterMixin, LimitedModelViewSet):
|
||||
filter_backends = [
|
||||
DjangoFilterBackend,
|
||||
filters.SearchFilter,
|
||||
filters.OrderingFilter,
|
||||
PrintingOrderOrderingFilter,
|
||||
]
|
||||
filterset_class = PrintingOrderFilterSet
|
||||
search_fields = ["customer__name", "fabric", "area", "craft", "description"]
|
||||
|
||||
Reference in New Issue
Block a user