mirror of https://github.com/jumpserver/jumpserver
fix: 修改用户相关tickets为自己申请的或者待受理的
parent
4de2ae607d
commit
44a42e4739
|
@ -50,7 +50,7 @@ class TicketViewSet(CommonApiMixin, viewsets.ModelViewSet):
|
||||||
instance = serializer.save()
|
instance = serializer.save()
|
||||||
instance.open(applicant=self.request.user)
|
instance.open(applicant=self.request.user)
|
||||||
|
|
||||||
@action(detail=False, methods=[POST])
|
@action(detail=False, methods=[POST], permission_classes=[IsValidUser, ])
|
||||||
def open(self, request, *args, **kwargs):
|
def open(self, request, *args, **kwargs):
|
||||||
return super().create(request, *args, **kwargs)
|
return super().create(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
|
@ -148,35 +148,9 @@ class Ticket(CommonModelMixin, OrgModelMixin):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_user_related_tickets(cls, user):
|
def get_user_related_tickets(cls, user):
|
||||||
queries = None
|
queries = Q(applicant=user) | Q(assignees=user)
|
||||||
tickets = cls.all()
|
tickets = cls.all().filter(queries).distinct()
|
||||||
if user.is_superuser:
|
return tickets
|
||||||
pass
|
|
||||||
elif user.is_super_auditor:
|
|
||||||
pass
|
|
||||||
elif user.is_org_admin:
|
|
||||||
admin_orgs_id = [
|
|
||||||
str(org_id) for org_id in user.admin_orgs.values_list('id', flat=True)
|
|
||||||
]
|
|
||||||
assigned_tickets_id = [
|
|
||||||
str(ticket_id) for ticket_id in user.assigned_tickets.values_list('id', flat=True)
|
|
||||||
]
|
|
||||||
queries = Q(applicant=user)
|
|
||||||
queries |= Q(processor=user)
|
|
||||||
queries |= Q(org_id__in=admin_orgs_id)
|
|
||||||
queries |= Q(id__in=assigned_tickets_id)
|
|
||||||
elif user.is_org_auditor:
|
|
||||||
audit_orgs_id = [
|
|
||||||
str(org_id) for org_id in user.audit_orgs.values_list('id', flat=True)
|
|
||||||
]
|
|
||||||
queries = Q(org_id__in=audit_orgs_id)
|
|
||||||
elif user.is_common_user:
|
|
||||||
queries = Q(applicant=user)
|
|
||||||
else:
|
|
||||||
tickets = cls.objects.none()
|
|
||||||
if queries:
|
|
||||||
tickets = tickets.filter(queries)
|
|
||||||
return tickets.distinct()
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def all(cls):
|
def all(cls):
|
||||||
|
|
Loading…
Reference in New Issue