perf: change Command

pull/15058/head
ibuler 2025-03-18 13:40:40 +08:00
parent 6913518046
commit 4616ef07e7
7 changed files with 31 additions and 4 deletions

View File

@ -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),

View File

@ -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)

View File

@ -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')

View File

@ -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):

View File

@ -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

View File

@ -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')

View File

@ -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 = {}