mirror of https://github.com/jumpserver/jumpserver
perf: change Command
parent
6913518046
commit
4616ef07e7
|
@ -106,11 +106,9 @@ class CommandFilterACL(UserAssetAccountBaseACL):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def create_command_review_ticket(self, run_command, session, cmd_filter_acl, org_id):
|
def create_command_review_ticket(self, run_command, session, cmd_filter_acl, org_id):
|
||||||
from tickets.const import TicketType
|
|
||||||
from tickets.models import ApplyCommandTicket
|
from tickets.models import ApplyCommandTicket
|
||||||
data = {
|
data = {
|
||||||
'title': _('Command confirm') + ' ({})'.format(session.user),
|
'title': _('Command confirm') + ' ({})'.format(session.user),
|
||||||
'type': TicketType.command_confirm,
|
|
||||||
'applicant': session.user_obj,
|
'applicant': session.user_obj,
|
||||||
'apply_run_user_id': session.user_id,
|
'apply_run_user_id': session.user_id,
|
||||||
'apply_run_asset': str(session.asset),
|
'apply_run_asset': str(session.asset),
|
||||||
|
|
|
@ -2,6 +2,7 @@ from django.db import models
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from perms.const import ActionChoices
|
from perms.const import ActionChoices
|
||||||
|
from tickets.const import TicketType
|
||||||
from .general import Ticket
|
from .general import Ticket
|
||||||
|
|
||||||
__all__ = ['ApplyAssetTicket']
|
__all__ = ['ApplyAssetTicket']
|
||||||
|
@ -19,6 +20,8 @@ class ApplyAssetTicket(Ticket):
|
||||||
apply_date_start = models.DateTimeField(verbose_name=_('Date start'), null=True)
|
apply_date_start = models.DateTimeField(verbose_name=_('Date start'), null=True)
|
||||||
apply_date_expired = models.DateTimeField(verbose_name=_('Date expired'), null=True)
|
apply_date_expired = models.DateTimeField(verbose_name=_('Date expired'), null=True)
|
||||||
|
|
||||||
|
TICKET_TYPE = TicketType.apply_asset
|
||||||
|
|
||||||
def get_apply_actions_display(self):
|
def get_apply_actions_display(self):
|
||||||
return ActionChoices.display(self.apply_actions)
|
return ActionChoices.display(self.apply_actions)
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ from django.db import models
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from .general import Ticket
|
from .general import Ticket
|
||||||
|
from ...const import TicketType
|
||||||
|
|
||||||
|
|
||||||
class ApplyCommandTicket(Ticket):
|
class ApplyCommandTicket(Ticket):
|
||||||
|
@ -19,5 +20,7 @@ class ApplyCommandTicket(Ticket):
|
||||||
null=True, verbose_name=_('Command filter acl')
|
null=True, verbose_name=_('Command filter acl')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
TICKET_TYPE = TicketType.command_confirm
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Apply Command Ticket')
|
verbose_name = _('Apply Command Ticket')
|
||||||
|
|
|
@ -303,6 +303,8 @@ class Ticket(StatusMixin, JMSBaseModel):
|
||||||
max_length=36, blank=True, default='', verbose_name=_('Organization'), db_index=True
|
max_length=36, blank=True, default='', verbose_name=_('Organization'), db_index=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
TICKET_TYPE = TicketType.general
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('-date_created',)
|
ordering = ('-date_created',)
|
||||||
verbose_name = _('Ticket')
|
verbose_name = _('Ticket')
|
||||||
|
@ -313,11 +315,23 @@ class Ticket(StatusMixin, JMSBaseModel):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '{}({})'.format(self.title, self.applicant)
|
return '{}({})'.format(self.title, self.applicant)
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
self.type = self.TICKET_TYPE
|
||||||
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def spec_ticket(self):
|
def spec_ticket(self):
|
||||||
attr = self.type.replace('_', '') + 'ticket'
|
attr = self.type.replace('_', '') + 'ticket'
|
||||||
return getattr(self, attr)
|
return getattr(self, attr)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self):
|
||||||
|
return self.title
|
||||||
|
|
||||||
|
@name.setter
|
||||||
|
def name(self, value):
|
||||||
|
self.title = value
|
||||||
|
|
||||||
# TODO 先单独处理一下
|
# TODO 先单独处理一下
|
||||||
@property
|
@property
|
||||||
def org_name(self):
|
def org_name(self):
|
||||||
|
|
|
@ -5,6 +5,8 @@ from .general import Ticket
|
||||||
|
|
||||||
__all__ = ['ApplyLoginAssetTicket']
|
__all__ = ['ApplyLoginAssetTicket']
|
||||||
|
|
||||||
|
from ...const import TicketType
|
||||||
|
|
||||||
|
|
||||||
class ApplyLoginAssetTicket(Ticket):
|
class ApplyLoginAssetTicket(Ticket):
|
||||||
apply_login_user = models.ForeignKey(
|
apply_login_user = models.ForeignKey(
|
||||||
|
@ -17,6 +19,8 @@ class ApplyLoginAssetTicket(Ticket):
|
||||||
max_length=128, default='', verbose_name=_('Login account')
|
max_length=128, default='', verbose_name=_('Login account')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
TICKET_TYPE = TicketType.login_asset_confirm
|
||||||
|
|
||||||
def activate_connection_token_if_need(self):
|
def activate_connection_token_if_need(self):
|
||||||
if not self.connection_token:
|
if not self.connection_token:
|
||||||
return
|
return
|
||||||
|
|
|
@ -5,11 +5,15 @@ from .general import Ticket
|
||||||
|
|
||||||
__all__ = ['ApplyLoginTicket']
|
__all__ = ['ApplyLoginTicket']
|
||||||
|
|
||||||
|
from ...const import TicketType
|
||||||
|
|
||||||
|
|
||||||
class ApplyLoginTicket(Ticket):
|
class ApplyLoginTicket(Ticket):
|
||||||
apply_login_ip = models.GenericIPAddressField(verbose_name=_('Login IP'), null=True)
|
apply_login_ip = models.GenericIPAddressField(verbose_name=_('Login IP'), null=True)
|
||||||
apply_login_city = models.CharField(max_length=64, verbose_name=_('Login city'), null=True)
|
apply_login_city = models.CharField(max_length=64, verbose_name=_('Login city'), null=True)
|
||||||
apply_login_datetime = models.DateTimeField(verbose_name=_('Login Date'), null=True)
|
apply_login_datetime = models.DateTimeField(verbose_name=_('Login Date'), null=True)
|
||||||
|
|
||||||
|
TICKET_TYPE = TicketType.login_confirm
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Apply Login Ticket')
|
verbose_name = _('Apply Login Ticket')
|
||||||
|
|
|
@ -25,8 +25,9 @@ class TicketSerializer(OrgResourceModelSerializerMixin):
|
||||||
fields_mini = ['id', 'title']
|
fields_mini = ['id', 'title']
|
||||||
fields_small = fields_mini + ['org_id', 'comment']
|
fields_small = fields_mini + ['org_id', 'comment']
|
||||||
read_only_fields = [
|
read_only_fields = [
|
||||||
'serial_num', 'process_map', 'approval_step', 'type', 'state', 'applicant',
|
'serial_num', 'process_map', 'approval_step', 'type',
|
||||||
'status', 'date_created', 'date_updated', 'org_name', 'rel_snapshot'
|
'state', 'applicant', 'status', 'date_created',
|
||||||
|
'date_updated', 'org_name', 'rel_snapshot'
|
||||||
]
|
]
|
||||||
fields = fields_small + read_only_fields
|
fields = fields_small + read_only_fields
|
||||||
extra_kwargs = {}
|
extra_kwargs = {}
|
||||||
|
|
Loading…
Reference in New Issue