mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-21 19:38:07 +00:00
* feat: 工单多级审批 + 模版创建 * feat: 工单权限处理 * fix: 工单关闭后 再审批bug * perf: 修改一点 Co-authored-by: feng626 <1304903146@qq.com> Co-authored-by: ibuler <ibuler@qq.com>
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
from django.shortcuts import get_object_or_404
|
|
from rest_framework.response import Response
|
|
from rest_framework.generics import RetrieveDestroyAPIView
|
|
|
|
from common.permissions import IsAppUser
|
|
from common.utils import lazyproperty
|
|
from orgs.utils import tmp_to_root_org
|
|
from ..models import Ticket
|
|
|
|
|
|
__all__ = ['GenericTicketStatusRetrieveCloseAPI']
|
|
|
|
|
|
class GenericTicketStatusRetrieveCloseAPI(RetrieveDestroyAPIView):
|
|
permission_classes = (IsAppUser, )
|
|
|
|
def retrieve(self, request, *args, **kwargs):
|
|
if self.ticket.state_open:
|
|
status = 'await'
|
|
elif self.ticket.state_approve:
|
|
status = 'approved'
|
|
else:
|
|
status = 'rejected'
|
|
data = {
|
|
'status': status,
|
|
'action': self.ticket.state,
|
|
'processor': str(self.ticket.processor)
|
|
}
|
|
return Response(data=data, status=200)
|
|
|
|
def destroy(self, request, *args, **kwargs):
|
|
if self.ticket.status_open:
|
|
self.ticket.close(processor=self.ticket.applicant)
|
|
data = {
|
|
'action': self.ticket.state,
|
|
'status': self.ticket.status,
|
|
'processor': str(self.ticket.processor)
|
|
}
|
|
return Response(data=data, status=200)
|
|
|
|
@lazyproperty
|
|
def ticket(self):
|
|
with tmp_to_root_org():
|
|
return get_object_or_404(Ticket, pk=self.kwargs['pk'])
|