From 2454a07d38b6e430fbd757c94510cbe6a669c5b4 Mon Sep 17 00:00:00 2001 From: jiangweidong Date: Fri, 11 Nov 2022 16:54:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=85=B7=E6=9C=89?= =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=B7=A5=E5=8D=95=E6=9D=83=E9=99=90=E7=9A=84?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=94=B3=E8=AF=B7=E5=B7=A5=E5=8D=95=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E6=8C=87=E5=AE=9A=E7=94=B3=E8=AF=B7=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tickets/api/ticket.py | 2 -- apps/tickets/serializers/ticket/ticket.py | 13 +++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/tickets/api/ticket.py b/apps/tickets/api/ticket.py index d6e623892..e4dc94852 100644 --- a/apps/tickets/api/ticket.py +++ b/apps/tickets/api/ticket.py @@ -63,8 +63,6 @@ class TicketViewSet(CommonApiMixin, viewsets.ModelViewSet): def perform_create(self, serializer): instance = serializer.save() - instance.applicant = self.request.user - instance.save(update_fields=['applicant']) instance.open() @action(detail=False, methods=[POST], permission_classes=[RBACPermission, ]) diff --git a/apps/tickets/serializers/ticket/ticket.py b/apps/tickets/serializers/ticket/ticket.py index a0760e4d0..007be5aa8 100644 --- a/apps/tickets/serializers/ticket/ticket.py +++ b/apps/tickets/serializers/ticket/ticket.py @@ -3,6 +3,7 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers +from users.models import User from orgs.models import Organization from orgs.mixins.serializers import OrgResourceModelSerializerMixin from tickets.models import Ticket, TicketFlow @@ -70,6 +71,7 @@ class TicketApplySerializer(TicketSerializer): org_id = serializers.CharField( required=True, max_length=36, allow_blank=True, label=_("Organization") ) + applicant = serializers.CharField(required=False, allow_blank=True) class Meta: model = Ticket @@ -78,6 +80,15 @@ class TicketApplySerializer(TicketSerializer): 'type': {'required': True} } + def get_applicant(self, applicant_id): + current_user = self.context['request'].user + want_applicant = User.objects.filter(id=applicant_id).first() + if want_applicant and current_user.has_perm('tickets.add_superticket'): + applicant = want_applicant + else: + applicant = current_user + return applicant + @staticmethod def validate_org_id(org_id): org = Organization.get_instance(org_id) @@ -98,4 +109,6 @@ class TicketApplySerializer(TicketSerializer): else: error = _('The ticket flow `{}` does not exist'.format(ticket_type)) raise serializers.ValidationError(error) + + attrs['applicant'] = self.get_applicant(attrs.get('applicant')) return attrs