1
0
forked from erp-dev/erp

fix: added permission for plate_order and printing_order api

This commit is contained in:
2026-01-14 18:14:22 +08:00
parent fae667c965
commit cae0f8434e
17 changed files with 867 additions and 15 deletions

View File

@@ -28,6 +28,7 @@ from .serializers import (
PrintingJobDetailSerializer,
PrintingJobCreateUpdateSerializer,
)
from .mixins import CustomerVisibilityFilterMixin
class IsPrintingFactory(BasePermission):
@@ -96,7 +97,7 @@ class PrintingOrderFilterSet(django_filters.FilterSet):
@method_decorator(cache_page(20), name='list')
class PrintingOrderViewSet(LimitedModelViewSet):
class PrintingOrderViewSet(CustomerVisibilityFilterMixin, LimitedModelViewSet):
"""
印染订单 ViewSet
@@ -129,8 +130,14 @@ class PrintingOrderViewSet(LimitedModelViewSet):
格式: [{"state_name": "进度一", "state_id": 1, "count": 3}, ...]
- jobs_last_status_summary: 订单下所有印染任务按最后完成状态分组的数量汇总
格式: [{"state_name": "进度一", "count": 3}, ...]
权限控制:
- 默认按客户可见性过滤(员工只能看到自己负责的客户的订单)
- 拥有 printing.view_all_printingorders 权限可突破此限制
"""
queryset = models.PrintingOrder.objects.all()
customer_field = 'customer'
view_all_permission = 'printing.view_all_printingorders'
permission_classes = [DjangoModelPermissions]
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
filterset_class = PrintingOrderFilterSet
@@ -286,7 +293,7 @@ class PrintingJobFilterSet(django_filters.FilterSet):
fields = ['printing_order', 'product']
class PrintingJobViewSet(LimitedModelViewSet):
class PrintingJobViewSet(CustomerVisibilityFilterMixin, LimitedModelViewSet):
"""
印染款式明细 ViewSet
@@ -318,8 +325,14 @@ class PrintingJobViewSet(LimitedModelViewSet):
- pieces_max: 最大件数
- search: 全文搜索(产品名称、单位、尺寸、备注)
- ordering: 排序字段
权限控制:
- 默认按客户可见性过滤(通过 printing_order.customer
- 拥有 printing.view_all_printingorders 权限可突破此限制
"""
queryset = models.PrintingJob.objects.all()
customer_field = 'printing_order__customer'
view_all_permission = 'printing.view_all_printingorders'
permission_classes = [DjangoModelPermissions, IsPrintingFactory]
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
filterset_class = PrintingJobFilterSet
@@ -630,7 +643,7 @@ def _plate_order_last_modified(request, *args, **kwargs):
# @method_decorator(condition(last_modified_func=_plate_order_last_modified), name='list')
class PlateOrderViewSet(LimitedModelViewSet):
class PlateOrderViewSet(CustomerVisibilityFilterMixin, LimitedModelViewSet):
"""
开版订单 ViewSet
@@ -677,8 +690,14 @@ class PlateOrderViewSet(LimitedModelViewSet):
- created_date_to: 创建日期结束
- search: 全文搜索(设计编号、款式名称、客户名称、面料)
- ordering: 排序字段
权限控制:
- 默认按客户可见性过滤(员工只能看到自己负责的客户的订单)
- 拥有 printing.view_all_plateorders 权限可突破此限制
"""
queryset = models.PlateOrder.objects.all()
customer_field = 'customer'
view_all_permission = 'printing.view_all_plateorders'
permission_classes = [DjangoModelPermissions]
parser_classes = [MultiPartParser, FormParser, JSONParser] # 支持文件上传
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]