From 9b9e32d2f449b3f857dd22bfd22405dfed9c9dc0 Mon Sep 17 00:00:00 2001 From: feng626 <1304903146@qq.com> Date: Sat, 11 Dec 2021 12:50:30 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=B7=A5=E5=8D=95=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E7=BB=84=E7=BB=87=E8=87=AA=E5=8A=A8=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tickets/models/flow.py | 12 ++++++++---- apps/tickets/serializers/ticket/ticket.py | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/apps/tickets/models/flow.py b/apps/tickets/models/flow.py index 9542c4f2c..6add3696e 100644 --- a/apps/tickets/models/flow.py +++ b/apps/tickets/models/flow.py @@ -7,7 +7,7 @@ from common.mixins.models import CommonModelMixin from common.db.encoder import ModelJSONFieldEncoder from orgs.mixins.models import OrgModelMixin from orgs.models import Organization -from orgs.utils import tmp_to_root_org +from orgs.utils import tmp_to_root_org, tmp_to_org from ..const import TicketType, TicketApprovalLevel, TicketApprovalStrategy from ..signals import post_or_update_change_ticket_flow_approval @@ -64,9 +64,13 @@ class TicketFlow(CommonModelMixin, OrgModelMixin): return '{}'.format(self.type) @classmethod - def get_org_related_flows(cls): - flows = cls.objects.all() + def get_org_related_flows(cls, org_id=None): + if org_id: + with tmp_to_org(org_id): + flows = cls.objects.all() + else: + flows = cls.objects.all() cur_flow_types = flows.values_list('type', flat=True) with tmp_to_root_org(): - diff_global_flows = cls.objects.exclude(type__in=cur_flow_types).filter(org_id=Organization.ROOT_ID) + diff_global_flows = cls.objects.exclude(type__in=cur_flow_types) return flows | diff_global_flows diff --git a/apps/tickets/serializers/ticket/ticket.py b/apps/tickets/serializers/ticket/ticket.py index 636f06f4a..276da4267 100644 --- a/apps/tickets/serializers/ticket/ticket.py +++ b/apps/tickets/serializers/ticket/ticket.py @@ -108,7 +108,8 @@ class TicketApplySerializer(TicketSerializer): def validate(self, attrs): ticket_type = attrs.get('type') - flow = TicketFlow.get_org_related_flows().filter(type=ticket_type).first() + org_id = attrs.get('org_id') + flow = TicketFlow.get_org_related_flows(org_id=org_id).filter(type=ticket_type).first() if flow: attrs['flow'] = flow else: