From 6728ef10c42f7887e07d2eabb0b0cd349bb2f520 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 10 Feb 2022 13:53:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=9D=83=E9=99=90=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/qm/serializers.py | 3 +- hb_server/apps/sam/views.py | 11 ++++--- hb_server/apps/sam/views_sale.py | 6 ++-- hb_server/apps/wf/views.py | 16 ++++++---- hb_server/apps/wpm/views.py | 54 +++++++++++++++++--------------- 5 files changed, 51 insertions(+), 39 deletions(-) diff --git a/hb_server/apps/qm/serializers.py b/hb_server/apps/qm/serializers.py index fd64cd6..9a90354 100644 --- a/hb_server/apps/qm/serializers.py +++ b/hb_server/apps/qm/serializers.py @@ -129,7 +129,8 @@ class TestRecordUpdateSerializer(serializers.ModelSerializer): record_data = validated_data.pop('record_data') for attr, value in validated_data.items(): setattr(instance, attr, value) - instance.save(update_by=update_by) + instance.update_by = update_by + instance.save() for i in record_data: tri = i['id'] if i['field_value'] != tri.field_value: diff --git a/hb_server/apps/sam/views.py b/hb_server/apps/sam/views.py index ea52cb4..da60306 100644 --- a/hb_server/apps/sam/views.py +++ b/hb_server/apps/sam/views.py @@ -12,7 +12,8 @@ class CustomerViewSet(CreateUpdateCustomMixin, ModelViewSet): """ 客户-增删改查 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'customer_create', + 'put':'customer_update', 'delete':'customer_delete'} queryset = Customer.objects.all() serializer_class = CustomerSerializer search_fields = ['name', 'contact'] @@ -30,7 +31,8 @@ class ContractViewSet(CreateUpdateCustomMixin, ModelViewSet): """ 合同-增删改查 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'contract_create', + 'put':'contract_update', 'delete':'contract_delete'} queryset = Contract.objects.select_related('customer').all() serializer_class = ContractSerializer search_fields = ['name'] @@ -47,7 +49,8 @@ class OrderViewSet(CreateUpdateCustomMixin, ModelViewSet): """ 订单-增删改查 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'order_create', + 'put':'order_update', 'delete':'order_delete'} queryset = Order.objects.select_related('contract', 'customer').all() serializer_class = OrderSerializer search_fields = ['number', 'product'] @@ -60,7 +63,7 @@ class OrderViewSet(CreateUpdateCustomMixin, ModelViewSet): return OrderCreateUpdateSerializer return super().get_serializer_class() - @action(methods=['get'], detail=False, perms_map={'get':'*'}) + @action(methods=['get'], detail=False, perms_map={'get':'order_toplan'}) def toplan(self, request, pk=None): queryset = Order.objects.filter(count__gt=F('planed_count')).order_by('-id') page = self.paginate_queryset(queryset) diff --git a/hb_server/apps/sam/views_sale.py b/hb_server/apps/sam/views_sale.py index c114d89..1eb6717 100644 --- a/hb_server/apps/sam/views_sale.py +++ b/hb_server/apps/sam/views_sale.py @@ -21,7 +21,7 @@ class SaleViewSet(CreateUpdateModelAMixin, ListModelMixin, RetrieveModelMixin, C """ 销售记录 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'sale_create', 'delete':'sale_delete'} queryset = Sale.objects.select_related('customer', 'order', 'product', 'order__contract').all() serializer_class = SaleListSerializer search_fields = ['customer__name', 'order__number'] @@ -57,7 +57,7 @@ class SaleViewSet(CreateUpdateModelAMixin, ListModelMixin, RetrieveModelMixin, C SaleProduct.objects.bulk_create(i_l) return Response() - @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=serializers.Serializer) + @action(methods=['post'], detail=True, perms_map={'post':'sale_audit'}, serializer_class=serializers.Serializer) @transaction.atomic def audit(self, request, pk=None): """ @@ -124,7 +124,7 @@ class SaleProductViewSet(ListModelMixin, DestroyModelMixin, CreateModelMixin, Ge """ 销售记录关联产品 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'sale_update', 'delete':'sale_delete'} queryset = SaleProduct.objects.select_related('iproduct', 'iproduct__material', 'iproduct__warehouse').all() serializer_class = SaleProductListSerializer search_fields = [] diff --git a/hb_server/apps/wf/views.py b/hb_server/apps/wf/views.py index 02ac6a0..3040daa 100644 --- a/hb_server/apps/wf/views.py +++ b/hb_server/apps/wf/views.py @@ -24,6 +24,7 @@ from .scripts import GetParticipants, HandleScripts # Create your views here. class FromCodeListView(APIView): + perms_map = {'*':'*'} def get(self, request, format=None): """ 获取处理人代码列表 @@ -88,7 +89,8 @@ class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet): return Response(ret) class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet): - perms_map = {'*':'*'} + perms_map = {'get':'*', 'post':'workflow_update', + 'put':'workflow_update', 'delete':'workflow_delete'} queryset = State.objects.all() serializer_class = StateSerializer search_fields = ['name'] @@ -96,7 +98,8 @@ class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, Destr ordering = ['sort'] class TransitionViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet): - perms_map = {'*':'*'} + perms_map = {'get':'*', 'post':'workflow_update', + 'put':'workflow_update', 'delete':'workflow_delete'} queryset = Transition.objects.all() serializer_class = TransitionSerializer search_fields = ['name'] @@ -104,7 +107,8 @@ class TransitionViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, ordering = ['id'] class CustomFieldViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet): - perms_map = {'*':'*'} + perms_map = {'get':'*', 'post':'workflow_update', + 'put':'workflow_update', 'delete':'workflow_delete'} queryset = CustomField.objects.all() serializer_class = CustomFieldSerializer search_fields = ['field_name'] @@ -117,7 +121,7 @@ class CustomFieldViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, return super().get_serializer_class() class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, RetrieveModelMixin, GenericViewSet): - perms_map = {'*':'*'} + perms_map = {'get':'*', 'post':'ticket_create'} queryset = Ticket.objects.all() serializer_class = TicketSerializer search_fields = ['title'] @@ -348,7 +352,7 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin else: return Response('工单不可关闭', status=status.HTTP_400_BAD_REQUEST) - @action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=TicketDestorySerializer) + @action(methods=['post'], detail=False, perms_map={'post':'ticket_deletes'}, serializer_class=TicketDestorySerializer) def destory(self, request, pk=None): """ 批量物理删除 @@ -362,7 +366,7 @@ class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): """ 工单日志 """ - perms_map = {'*':'*'} + perms_map = {'get':'*'} queryset = TicketFlow.objects.all() serializer_class = TicketFlowSerializer search_fields = ['suggestion'] diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 43d9cee..dbf50f0 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -47,7 +47,7 @@ class WPlanViewSet(ListModelMixin, GenericViewSet): """ 车间生产计划 """ - perms_map = {'*': '*'} + perms_map = {'get': '*'} queryset = SubProductionPlan.objects.select_related( 'process', 'workshop', 'subproduction', 'product').exclude(state=0) search_fields = [] @@ -57,7 +57,7 @@ class WPlanViewSet(ListModelMixin, GenericViewSet): ordering_fields = [] ordering = ['-update_time'] - @action(methods=['post', 'get'], detail=True, perms_map={'post': '*', 'get': '*'}, serializer_class=PickHalfsSerializer) + @action(methods=['post', 'get'], detail=True, perms_map={'post': 'pick_half', 'get': '*'}, serializer_class=PickHalfsSerializer) @transaction.atomic def pick_half(self, request, pk=None): """ @@ -124,7 +124,7 @@ class WMaterialViewSet(CreateUpdateModelAMixin, ListModelMixin, GenericViewSet): """ 车间物料表 """ - perms_map = {'*': '*'} + perms_map = {'get': '*'} queryset = WMaterial.objects.select_related( 'material', 'subproduction_plan').filter(count__gt=0) serializer_class = WMaterialListSerializer @@ -132,7 +132,7 @@ class WMaterialViewSet(CreateUpdateModelAMixin, ListModelMixin, GenericViewSet): ordering_fields = ['material__number'] ordering = ['material__number'] - @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=PickSerializer) + @action(methods=['post'], detail=False, perms_map={'post': 'pick'}, serializer_class=PickSerializer) def pick(self, request, pk=None): """ 领料 @@ -148,7 +148,7 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): """ 半成品 """ - perms_map = {'*': '*'} + perms_map = {'get': '*'} queryset = WProduct.objects.select_related('step', 'material', 'subproduction_plan', 'warehouse', 'subproduction_plan__production_plan__order', 'to_order').prefetch_related('wp_child') @@ -169,7 +169,7 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): queryset = queryset.filter(is_hidden=False) return queryset - @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=WpmTestFormInitSerializer) + @action(methods=['post'], detail=False, perms_map={'post': 'wp_test_init'}, serializer_class=WpmTestFormInitSerializer) @transaction.atomic def test_init(self, request, pk=None): """ @@ -228,7 +228,7 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): return Response(TestRecordDetailSerializer(instance=tr).data) - @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=WproductPutInsSerializer) + @action(methods=['post'], detail=False, perms_map={'post': 'wp_putins'}, serializer_class=WproductPutInsSerializer) @transaction.atomic def putins(self, request, pk=None): """ @@ -287,7 +287,7 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): WpmService.add_wproduct_flow_log(i, 'putins') return Response() - @action(methods=['post'], detail=True, perms_map={'post': '*'}, serializer_class=WproductPutInSerializer) + @action(methods=['post'], detail=True, perms_map={'post': 'wp_putin'}, serializer_class=WproductPutInSerializer) @transaction.atomic def putin(self, request, pk=None): """ @@ -334,7 +334,7 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): WpmService.add_wproduct_flow_log(wproduct, 'putin') return Response() - @action(methods=['post'], detail=True, perms_map={'post': '*'}, serializer_class=ScrapSerializer) + @action(methods=['post'], detail=True, perms_map={'post': 'wp_scrap'}, serializer_class=ScrapSerializer) def scrap(self, request, pk=None): """ 报废操作 @@ -399,7 +399,7 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): else: raise exceptions.APIException('未找到对应审批流程') - @action(methods=['post'], detail=True, perms_map={'post': '*'}, serializer_class=WproductMtestSerializer) + @action(methods=['post'], detail=True, perms_map={'post': 'wp_mtest'}, serializer_class=WproductMtestSerializer) @transaction.atomic def mtest(self, request, pk=None): """ @@ -424,7 +424,7 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): WpmService.add_wproduct_flow_log(instance=obj, change_str=change_str) return Response() - @action(methods=['get'], detail=True, perms_map={'get': '*'}) + @action(methods=['get'], detail=True, perms_map={'get': 'wp_card'}) def card(self, request, pk=None): """ 流程卡 @@ -449,7 +449,7 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): ret.append([str(index + 1), item['step_name'], item['actions']]) return Response(ret) - @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=WproductNeedToOrderSerializer) + @action(methods=['post'], detail=False, perms_map={'post': 'wp_need_to_order'}, serializer_class=WproductNeedToOrderSerializer) @transaction.atomic def need_to_order(self, request, pk=None): """ @@ -467,7 +467,7 @@ class WProductViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): WpmService.add_wproduct_flow_log(i, change_str='need_to_order') return Response() - @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=WproductToOrderSerializer) + @action(methods=['post'], detail=False, perms_map={'post': 'wp_to_order'}, serializer_class=WproductToOrderSerializer) @transaction.atomic def to_order(self, request, pk=None): """ @@ -496,7 +496,7 @@ class WproductTicketViewSet(ListModelMixin, GenericViewSet): """ 玻璃审批工单 """ - perms_map = {'*': '*'} + perms_map = {'get': '*'} queryset = WprouctTicket.objects.select_related('step', 'material', 'subproduction_plan', 'resp_process', 'subproduction_plan__production_plan__order', 'subproduction_plan__production_plan') @@ -512,7 +512,8 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd """ 生产操作记录 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'operation_create', + 'put':'operation_update', 'delete':'operation_delete'} queryset = Operation.objects.select_related('step').prefetch_related( 'ow_operation', 'oe_operation', 'or_operation').all() serializer_class = OperationListSerializer @@ -622,7 +623,7 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd opm.save() return Response() - @action(methods=['post'], detail=True, perms_map={'post': '*'}, serializer_class=serializers.Serializer) + @action(methods=['post'], detail=True, perms_map={'post': 'operation_submit'}, serializer_class=serializers.Serializer) @transaction.atomic def submit(self, request, pk=None): """ @@ -775,7 +776,8 @@ class OperationWproductViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMix """ 操作使用的半成品 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'operation_update', + 'put':'operation_update', 'delete':'operation_delete'} queryset = OperationWproduct.objects.select_related( 'subproduction_plan', 'material').all() serializer_class = OperationWproductListSerializer @@ -804,7 +806,8 @@ class OperationEquipViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMixin, """ 操作使用的设备 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'operation_update', + 'put':'operation_update', 'delete':'operation_delete'} queryset = OperationEquip.objects.select_related( 'operation', 'equip').all() serializer_class = OperationEquipListSerializer @@ -836,7 +839,8 @@ class OperationRecordViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMixin """ 操作使用的自定义表格 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'operation_update', + 'put':'operation_update', 'delete':'operation_delete'} queryset = OperationRecord.objects.select_related( 'operation', 'form').all() serializer_class = OperationRecordListSerializer @@ -880,7 +884,7 @@ class OperationMaterialInputViewSet(ListModelMixin, CreateModelMixin, DestroyMod """ 消耗物料 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'operation_update', 'delete':'operation_delete'} queryset = OperationMaterial.objects.select_related( 'operation', 'subproduction_plan').filter(type=SubprodctionMaterial.SUB_MA_TYPE_IN) serializer_class = OperationMaterialListSerializer @@ -893,7 +897,7 @@ class OperationMaterialInputViewSet(ListModelMixin, CreateModelMixin, DestroyMod return OperationMaterialCreate1Serailizer return super().get_serializer_class() - @action(methods=['post'], detail=False, perms_map={'post': '*'}, + @action(methods=['post'], detail=False, perms_map={'post': 'operation_update'}, serializer_class=OperationMaterialCreate1ListSerailizer) def creates(self, request, pk=None): """ @@ -917,7 +921,7 @@ class CuttingListViewSet(ListModelMixin, GenericViewSet): """ 下料清单 """ - perms_map = {'*': '*'} + perms_map = {'get': '*'} queryset = OperationMaterial.objects.select_related('operation', 'subproduction_plan', 'material', 'operation__create_by').filter(operation__step__id=1, @@ -932,7 +936,7 @@ class OperationMaterialOutputViewSet(ListModelMixin, CreateModelMixin, DestroyMo """ 产出物料 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'operation_update', 'delete':'operation_delete'} queryset = OperationMaterial.objects.select_related( 'operation', 'subproduction_plan').filter(type=SubprodctionMaterial.SUB_MA_TYPE_OUT) serializer_class = OperationMaterialListSerializer @@ -945,7 +949,7 @@ class OperationMaterialOutputViewSet(ListModelMixin, CreateModelMixin, DestroyMo return OperationMaterialCreate2Serailizer return super().get_serializer_class() - @action(methods=['post'], detail=False, perms_map={'post': '*'}, + @action(methods=['post'], detail=False, perms_map={'post': 'operation_update'}, serializer_class=OperationMaterialCreate2ListSerailizer) def creates(self, request, pk=None): """ @@ -969,7 +973,7 @@ class OperationMaterialToolViewSet(ListModelMixin, CreateModelMixin, DestroyMode """ 工具工装 """ - perms_map = {'*': '*'} + perms_map = {'get': '*', 'post':'operation_update', 'delete':'operation_delete'} queryset = OperationMaterial.objects.select_related( 'operation', 'subproduction_plan').filter(type=SubprodctionMaterial.SUB_MA_TYPE_TOOL) serializer_class = OperationMaterialListSerializer