mirror of https://github.com/jumpserver/jumpserver
commit
44044a7d99
|
@ -1,6 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
from .ticket import *
|
||||
from .assignee import *
|
||||
from .comment import *
|
||||
from .common import *
|
||||
|
|
|
@ -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
|
|
@ -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")
|
||||
|
|
|
@ -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, ])
|
||||
|
||||
|
|
|
@ -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')
|
||||
)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
from .ticket import *
|
||||
from .assignee import *
|
||||
from .comment import *
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
__all__ = ['AssigneeSerializer']
|
||||
|
||||
|
||||
class AssigneeSerializer(serializers.Serializer):
|
||||
id = serializers.UUIDField()
|
||||
name = serializers.CharField()
|
||||
username = serializers.CharField()
|
|
@ -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)
|
||||
|
|
|
@ -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 = []
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue