diff --git a/apps/opm/serializers.py b/apps/opm/serializers.py index 8c0cf46e..0a164d29 100644 --- a/apps/opm/serializers.py +++ b/apps/opm/serializers.py @@ -197,6 +197,7 @@ class OplListSerializer(CustomModelSerializer): class OplDetailSerializer(CustomModelSerializer): + cate_name = serializers.CharField(source='cate.name', read_only=True) operation_ = OperationDetailSerializer(source='operation', read_only=True) dept_do_ = DeptSimpleSerializer(source='dept_do', read_only=True) charger_ = UserSimpleSerializer(source='charger', read_only=True) diff --git a/apps/opm/services.py b/apps/opm/services.py index ed68e53d..88f28694 100644 --- a/apps/opm/services.py +++ b/apps/opm/services.py @@ -42,6 +42,7 @@ def bind_opl(ticket: Ticket, transition: Transition, new_ticket_data: dict): 'dept_bus': opl.operation.dept_bus.id }) ticket.ticket_data = ticket_data + ticket.create_by = opl.create_by ticket.save() opl.ticket = ticket opl.number = ticket.sn diff --git a/apps/rpm/serializers.py b/apps/rpm/serializers.py index 168679dd..3884a910 100644 --- a/apps/rpm/serializers.py +++ b/apps/rpm/serializers.py @@ -73,6 +73,8 @@ class RfileListSerializer(CustomModelSerializer): class RpjCreateUpdateSerializer(CustomModelSerializer): + rparty = serializers.PrimaryKeyRelatedField(queryset=Rparty.objects.all(), required=False) + belong_dept = serializers.PrimaryKeyRelatedField(queryset=Dept.objects.all(), required=False) class Meta: model = Rpj fields = ['name', 'contract_number', 'type', 'come_time', 'leave_time', 'belong_dept', 'rparty'] diff --git a/apps/rpm/services.py b/apps/rpm/services.py index d6839ed4..d4cafba9 100644 --- a/apps/rpm/services.py +++ b/apps/rpm/services.py @@ -20,6 +20,7 @@ def bind_rpj(ticket: Ticket, transition: Transition, new_ticket_data: dict): rpj.state = Rpj.RPJ_AUDIT rpj.save() ticket.belong_dept = rpj.belong_dept + ticket.create_by = rpj.create_by ticket.save() diff --git a/apps/rpm/views.py b/apps/rpm/views.py index e522f257..17ad81b3 100644 --- a/apps/rpm/views.py +++ b/apps/rpm/views.py @@ -24,6 +24,14 @@ class RpartyViewSet(CustomModelViewSet): serializer_class = RpartySerializer select_related_fields = ['admin', 'belong_dept'] + def get_queryset(self): + queryset = super().get_queryset() + # 防止越权,加入的逻辑,可以通过岗位控权实现 + if self.request.user.type == 'remployee': + queryset = queryset.filter(dept=self.request.user.belong_dept) + return queryset + + @action(methods=['post'], detail=True, perms_map={'post': 'rparty:assgin'}, serializer_class=RpartyAssignSerializer) @transaction.atomic def assign(self, request, *args, **kwargs): @@ -59,7 +67,7 @@ class RfileViewSet(ListModelMixin, CustomGenericViewSet): queryset = super().get_queryset() # 防止越权,加入的逻辑,可以通过岗位控权实现 if self.request.user.type == 'remployee': - queryset = queryset.filter(rparty=self.request.user.belong_dept) + queryset = queryset.filter(rparty__dept=self.request.user.belong_dept) return queryset @@ -118,7 +126,7 @@ class RpjViewSet(CustomModelViewSet): def get_queryset(self): queryset = super().get_queryset() if self.request.user.type == 'remployee': - queryset = queryset.filter(belong_dept=self.request.user.belong_dept) + queryset = queryset.filter(rparty__dept=self.request.user.belong_dept) return queryset @transaction.atomic diff --git a/apps/vm/services.py b/apps/vm/services.py index 0711ae94..27a94a92 100644 --- a/apps/vm/services.py +++ b/apps/vm/services.py @@ -11,6 +11,7 @@ def bind_visit(ticket, transition, new_ticket_data: dict): visit.state = Visit.V_AUDIT visit.save() ticket.belong_dept = visit.receptionist.belong_dept + ticket.create_by = visit.create_by ticket.save()