diff --git a/apps/acls/models/command_acl.py b/apps/acls/models/command_acl.py index e04af69ee..f4d05007b 100644 --- a/apps/acls/models/command_acl.py +++ b/apps/acls/models/command_acl.py @@ -106,11 +106,9 @@ class CommandFilterACL(UserAssetAccountBaseACL): return self.name def create_command_review_ticket(self, run_command, session, cmd_filter_acl, org_id): - from tickets.const import TicketType from tickets.models import ApplyCommandTicket data = { 'title': _('Command confirm') + ' ({})'.format(session.user), - 'type': TicketType.command_confirm, 'applicant': session.user_obj, 'apply_run_user_id': session.user_id, 'apply_run_asset': str(session.asset), diff --git a/apps/tickets/models/ticket/apply_asset.py b/apps/tickets/models/ticket/apply_asset.py index 39784201b..37b728be8 100644 --- a/apps/tickets/models/ticket/apply_asset.py +++ b/apps/tickets/models/ticket/apply_asset.py @@ -2,6 +2,7 @@ from django.db import models from django.utils.translation import gettext_lazy as _ from perms.const import ActionChoices +from tickets.const import TicketType from .general import Ticket __all__ = ['ApplyAssetTicket'] @@ -19,6 +20,8 @@ class ApplyAssetTicket(Ticket): apply_date_start = models.DateTimeField(verbose_name=_('Date start'), null=True) apply_date_expired = models.DateTimeField(verbose_name=_('Date expired'), null=True) + TICKET_TYPE = TicketType.apply_asset + def get_apply_actions_display(self): return ActionChoices.display(self.apply_actions) diff --git a/apps/tickets/models/ticket/command_confirm.py b/apps/tickets/models/ticket/command_confirm.py index 62103eb1e..66f473a5d 100644 --- a/apps/tickets/models/ticket/command_confirm.py +++ b/apps/tickets/models/ticket/command_confirm.py @@ -2,6 +2,7 @@ from django.db import models from django.utils.translation import gettext_lazy as _ from .general import Ticket +from ...const import TicketType class ApplyCommandTicket(Ticket): @@ -19,5 +20,7 @@ class ApplyCommandTicket(Ticket): null=True, verbose_name=_('Command filter acl') ) + TICKET_TYPE = TicketType.command_confirm + class Meta: verbose_name = _('Apply Command Ticket') diff --git a/apps/tickets/models/ticket/general.py b/apps/tickets/models/ticket/general.py index 1696c94eb..09789ee3e 100644 --- a/apps/tickets/models/ticket/general.py +++ b/apps/tickets/models/ticket/general.py @@ -303,6 +303,8 @@ class Ticket(StatusMixin, JMSBaseModel): max_length=36, blank=True, default='', verbose_name=_('Organization'), db_index=True ) + TICKET_TYPE = TicketType.general + class Meta: ordering = ('-date_created',) verbose_name = _('Ticket') @@ -313,11 +315,23 @@ class Ticket(StatusMixin, JMSBaseModel): def __str__(self): return '{}({})'.format(self.title, self.applicant) + def save(self, *args, **kwargs): + self.type = self.TICKET_TYPE + super().save(*args, **kwargs) + @property def spec_ticket(self): attr = self.type.replace('_', '') + 'ticket' return getattr(self, attr) + @property + def name(self): + return self.title + + @name.setter + def name(self, value): + self.title = value + # TODO 先单独处理一下 @property def org_name(self): diff --git a/apps/tickets/models/ticket/login_asset_confirm.py b/apps/tickets/models/ticket/login_asset_confirm.py index ce2f7f6fd..eabb0091d 100644 --- a/apps/tickets/models/ticket/login_asset_confirm.py +++ b/apps/tickets/models/ticket/login_asset_confirm.py @@ -5,6 +5,8 @@ from .general import Ticket __all__ = ['ApplyLoginAssetTicket'] +from ...const import TicketType + class ApplyLoginAssetTicket(Ticket): apply_login_user = models.ForeignKey( @@ -17,6 +19,8 @@ class ApplyLoginAssetTicket(Ticket): max_length=128, default='', verbose_name=_('Login account') ) + TICKET_TYPE = TicketType.login_asset_confirm + def activate_connection_token_if_need(self): if not self.connection_token: return diff --git a/apps/tickets/models/ticket/login_confirm.py b/apps/tickets/models/ticket/login_confirm.py index 1f22bbca5..2e1c5664e 100644 --- a/apps/tickets/models/ticket/login_confirm.py +++ b/apps/tickets/models/ticket/login_confirm.py @@ -5,11 +5,15 @@ from .general import Ticket __all__ = ['ApplyLoginTicket'] +from ...const import TicketType + class ApplyLoginTicket(Ticket): 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_datetime = models.DateTimeField(verbose_name=_('Login Date'), null=True) + TICKET_TYPE = TicketType.login_confirm + class Meta: verbose_name = _('Apply Login Ticket') diff --git a/apps/tickets/serializers/ticket/ticket.py b/apps/tickets/serializers/ticket/ticket.py index 442a03109..0f565d2ad 100644 --- a/apps/tickets/serializers/ticket/ticket.py +++ b/apps/tickets/serializers/ticket/ticket.py @@ -25,8 +25,9 @@ class TicketSerializer(OrgResourceModelSerializerMixin): fields_mini = ['id', 'title'] fields_small = fields_mini + ['org_id', 'comment'] read_only_fields = [ - 'serial_num', 'process_map', 'approval_step', 'type', 'state', 'applicant', - 'status', 'date_created', 'date_updated', 'org_name', 'rel_snapshot' + 'serial_num', 'process_map', 'approval_step', 'type', + 'state', 'applicant', 'status', 'date_created', + 'date_updated', 'org_name', 'rel_snapshot' ] fields = fields_small + read_only_fields extra_kwargs = {}