1
0
forked from erp-dev/erp

feat: shipment change && version modelize

This commit is contained in:
2026-07-09 23:03:22 +08:00
parent 36e4bb6de6
commit 48e4782e1e
23 changed files with 947 additions and 36 deletions

View File

@@ -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"]