From 5854ad1975929e1fd10a246ca08bb80ee8d3644c Mon Sep 17 00:00:00 2001 From: feng626 <1304903146@qq.com> Date: Thu, 26 Aug 2021 18:29:02 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tickets/api/__init__.py | 1 - apps/tickets/api/assignee.py | 35 ------------------- apps/tickets/const.py | 6 ++-- .../migrations/0010_auto_20210812_1618.py | 6 ++-- apps/tickets/models/flow.py | 2 +- apps/tickets/serializers/__init__.py | 1 - apps/tickets/serializers/assignee.py | 9 ----- apps/tickets/serializers/ticket/ticket.py | 8 ++--- apps/tickets/urls/api_urls.py | 1 - apps/users/models/user.py | 4 --- 10 files changed, 10 insertions(+), 63 deletions(-) delete mode 100644 apps/tickets/api/assignee.py delete mode 100644 apps/tickets/serializers/assignee.py diff --git a/apps/tickets/api/__init__.py b/apps/tickets/api/__init__.py index a6b5e39c6..a9d31b436 100644 --- a/apps/tickets/api/__init__.py +++ b/apps/tickets/api/__init__.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- # from .ticket import * -from .assignee import * from .comment import * from .common import * diff --git a/apps/tickets/api/assignee.py b/apps/tickets/api/assignee.py deleted file mode 100644 index 940ff900a..000000000 --- a/apps/tickets/api/assignee.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# -from orgs.models import Organization -from rest_framework import viewsets - -from common.permissions import IsValidUser -from common.exceptions import JMSException -from users.models import User -from .. import serializers - - -class AssigneeViewSet(viewsets.ReadOnlyModelViewSet): - permission_classes = (IsValidUser,) - serializer_class = serializers.AssigneeSerializer - filterset_fields = ('id', 'name', 'username', 'email', 'source') - search_fields = filterset_fields - - def get_org(self, org_id): - org = Organization.get_instance(org_id) - if not org: - error = ('The organization `{}` does not exist'.format(org_id)) - raise JMSException(error) - return org - - def get_queryset(self): - org_id = self.request.query_params.get('org_id') - type = self.request.query_params.get('type') - if type == 'super': - queryset = User.get_super_admins() - elif type == 'super_admin': - org = self.get_org(org_id) - queryset = User.get_super_and_org_admins(org=org) - else: - queryset = User.objects.all() - return queryset diff --git a/apps/tickets/const.py b/apps/tickets/const.py index 0a48cc907..328b8f36d 100644 --- a/apps/tickets/const.py +++ b/apps/tickets/const.py @@ -44,7 +44,7 @@ class TicketApprovalLevel(IntegerChoices): class TicketApprovalStrategy(TextChoices): - super = 'super', _("Super user") - admin = 'admin', _("Admin user") super_admin = 'super_admin', _("Super admin user") - custom = 'custom', _("Custom user") + org_admin = 'org_admin', _("Org admin user") + super_org_admin = 'super_org_admin', _("Super org admin user") + custom_user = 'custom_user', _("Custom user") diff --git a/apps/tickets/migrations/0010_auto_20210812_1618.py b/apps/tickets/migrations/0010_auto_20210812_1618.py index cb41aaf23..af357ab70 100644 --- a/apps/tickets/migrations/0010_auto_20210812_1618.py +++ b/apps/tickets/migrations/0010_auto_20210812_1618.py @@ -83,10 +83,8 @@ def create_ticket_flow_and_approval_rule(apps, schema_editor): assignees_display = ['{0.name}({0.username})'.format(i) for i in super_user] with transaction.atomic(): for ticket_type in TicketType.values: - ticket_flow_instance = ticket_flow_model.objects.create(created_by='System', - type=ticket_type, org_id=org_id) - approval_rule_instance = approval_rule_model.objects.create(strategy='super', - assignees_display=assignees_display) + ticket_flow_instance = ticket_flow_model.objects.create(created_by='System', type=ticket_type, org_id=org_id) + approval_rule_instance = approval_rule_model.objects.create(strategy='super', assignees_display=assignees_display) approval_rule_instance.assignees.set(list(super_user)) ticket_flow_instance.rules.set([approval_rule_instance, ]) diff --git a/apps/tickets/models/flow.py b/apps/tickets/models/flow.py index 3273056d6..a856dafc3 100644 --- a/apps/tickets/models/flow.py +++ b/apps/tickets/models/flow.py @@ -19,7 +19,7 @@ class ApprovalRule(CommonModelMixin): verbose_name=_('Approve level') ) strategy = models.CharField( - max_length=64, default=TicketApprovalStrategy.super, + max_length=64, default=TicketApprovalStrategy.super_admin, choices=TicketApprovalStrategy.choices, verbose_name=_('Approve strategy') ) diff --git a/apps/tickets/serializers/__init__.py b/apps/tickets/serializers/__init__.py index 6b519ef80..4f7ca772b 100644 --- a/apps/tickets/serializers/__init__.py +++ b/apps/tickets/serializers/__init__.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- # from .ticket import * -from .assignee import * from .comment import * diff --git a/apps/tickets/serializers/assignee.py b/apps/tickets/serializers/assignee.py deleted file mode 100644 index 217c26fa9..000000000 --- a/apps/tickets/serializers/assignee.py +++ /dev/null @@ -1,9 +0,0 @@ -from rest_framework import serializers - -__all__ = ['AssigneeSerializer'] - - -class AssigneeSerializer(serializers.Serializer): - id = serializers.UUIDField() - name = serializers.CharField() - username = serializers.CharField() diff --git a/apps/tickets/serializers/ticket/ticket.py b/apps/tickets/serializers/ticket/ticket.py index 7408da11f..ca5f6add1 100644 --- a/apps/tickets/serializers/ticket/ticket.py +++ b/apps/tickets/serializers/ticket/ticket.py @@ -153,7 +153,7 @@ class TicketFlowApproveSerializer(serializers.ModelSerializer): } def get_assignees_read_only(self, obj): - if obj.strategy == TicketApprovalStrategy.custom: + if obj.strategy == TicketApprovalStrategy.custom_user: return obj.assignees.values_list('id', flat=True) return [] @@ -196,11 +196,11 @@ class TicketFlowSerializer(OrgResourceModelSerializerMixin): for level, data in enumerate(childs, 1): data_m2m = data.pop(assignees, None) child_instance = related_model.objects.create(**data, level=level) - if child_instance.strategy == 'super': + if child_instance.strategy == TicketApprovalStrategy.super_admin: data_m2m = list(User.get_super_admins()) - elif child_instance.strategy == 'admin': + elif child_instance.strategy == TicketApprovalStrategy.org_admin: data_m2m = list(User.get_org_admins()) - elif child_instance.strategy == 'super_admin': + elif child_instance.strategy == TicketApprovalStrategy.super_org_admin: data_m2m = list(User.get_super_and_org_admins()) getattr(child_instance, assignees).set(data_m2m) child_instances.append(child_instance) diff --git a/apps/tickets/urls/api_urls.py b/apps/tickets/urls/api_urls.py index 1f284e7f1..ef72013a1 100644 --- a/apps/tickets/urls/api_urls.py +++ b/apps/tickets/urls/api_urls.py @@ -9,7 +9,6 @@ router = BulkRouter() router.register('tickets', api.TicketViewSet, 'ticket') router.register('flows', api.TicketFlowViewSet, 'flows') -router.register('assignees', api.AssigneeViewSet, 'assignee') router.register('comments', api.CommentViewSet, 'comment') urlpatterns = [] diff --git a/apps/users/models/user.py b/apps/users/models/user.py index b87592ae7..f407b5886 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -357,10 +357,6 @@ class RoleMixin: def get_super_admins(cls): return cls.objects.filter(role=cls.ROLE.ADMIN) - @classmethod - def get_auditor_and_users(cls): - return cls.objects.filter(role__in=[cls.ROLE.USER, cls.ROLE.AUDITOR]) - @classmethod def get_org_admins(cls, org=None): from orgs.models import Organization