perf: ticket accounts

pull/9098/head
feng 2022-11-17 18:04:38 +08:00
parent 71122312cf
commit 543d61442c
5 changed files with 21 additions and 37 deletions

View File

@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
#
from django.db import models
from django.utils.translation import ugettext_lazy as _
from common.db.fields import BitChoices

View File

@ -64,17 +64,15 @@ class AssetPermission(OrgModelMixin):
# 特殊的账号: @ALL, @INPUT @USER 默认包含,将来在全局设置中进行控制.
accounts = models.JSONField(default=list, verbose_name=_("Accounts"))
actions = models.IntegerField(default=ActionChoices.connect, verbose_name=_("Actions"))
is_active = models.BooleanField(default=True, verbose_name=_('Active'))
date_start = models.DateTimeField(
default=timezone.now, db_index=True, verbose_name=_("Date start")
)
date_start = models.DateTimeField(default=timezone.now, db_index=True, verbose_name=_("Date start"))
date_expired = models.DateTimeField(
default=date_expired_default, db_index=True, verbose_name=_('Date expired')
)
created_by = models.CharField(max_length=128, blank=True, verbose_name=_('Created by'))
date_created = models.DateTimeField(auto_now_add=True, verbose_name=_('Date created'))
from_ticket = models.BooleanField(default=False, verbose_name=_('From ticket'))
comment = models.TextField(verbose_name=_('Comment'), blank=True)
is_active = models.BooleanField(default=True, verbose_name=_('Active'))
from_ticket = models.BooleanField(default=False, verbose_name=_('From ticket'))
date_created = models.DateTimeField(auto_now_add=True, verbose_name=_('Date created'))
created_by = models.CharField(max_length=128, blank=True, verbose_name=_('Created by'))
objects = AssetPermissionManager.from_queryset(AssetPermissionQuerySet)()

View File

@ -14,7 +14,6 @@ class Handler(BaseHandler):
if is_finished:
self._create_asset_permission()
# permission
def _create_asset_permission(self):
org_id = self.ticket.org_id
with tmp_to_org(org_id):
@ -27,6 +26,7 @@ class Handler(BaseHandler):
apply_permission_name = self.ticket.apply_permission_name
apply_actions = self.ticket.apply_actions
apply_accounts = self.ticket.apply_accounts
apply_date_start = self.ticket.apply_date_start
apply_date_expired = self.ticket.apply_date_expired
permission_created_by = '{}:{}'.format(
@ -46,19 +46,20 @@ class Handler(BaseHandler):
)
permission_data = {
'id': self.ticket.id,
'name': apply_permission_name,
'from_ticket': True,
'comment': str(permission_comment),
'created_by': permission_created_by,
'id': self.ticket.id,
'actions': apply_actions,
'accounts': apply_accounts,
'name': apply_permission_name,
'date_start': apply_date_start,
'date_expired': apply_date_expired,
'comment': str(permission_comment),
'created_by': permission_created_by,
}
with tmp_to_org(self.ticket.org_id):
asset_permission = AssetPermission.objects.create(**permission_data)
asset_permission.users.add(self.ticket.applicant)
asset_permission.nodes.set(apply_nodes)
asset_permission.assets.set(apply_assets)
asset_permission.users.add(self.ticket.applicant)
return asset_permission

View File

@ -1,22 +1,6 @@
from django.utils.translation import ugettext as _
from tickets.models import ApplyLoginTicket
from .base import BaseHandler
class Handler(BaseHandler):
ticket: ApplyLoginTicket
def _construct_meta_body_of_open(self):
apply_login_ip = self.ticket.apply_login_ip
apply_login_city = self.ticket.apply_login_city
apply_login_datetime = self.ticket.apply_login_datetime
applied_body = '''
{}: {}
{}: {}
{}: {}
'''.format(
_("Applied login IP"), apply_login_ip,
_("Applied login city"), apply_login_city,
_("Applied login datetime"), apply_login_datetime,
)
return applied_body

View File

@ -24,7 +24,9 @@ from tickets.handlers import get_ticket_handler
from tickets.errors import AlreadyClosed
from ..flow import TicketFlow
__all__ = ['Ticket', 'TicketStep', 'TicketAssignee', 'SuperTicket', 'SubTicketManager']
__all__ = [
'Ticket', 'TicketStep', 'TicketAssignee', 'SuperTicket', 'SubTicketManager'
]
class TicketStep(CommonModelMixin):
@ -282,19 +284,19 @@ class Ticket(StatusMixin, CommonModelMixin):
)
# 申请人
applicant = models.ForeignKey(
'users.User', related_name='applied_tickets', on_delete=models.SET_NULL,
null=True, verbose_name=_("Applicant")
'users.User', related_name='applied_tickets', null=True,
on_delete=models.SET_NULL, verbose_name=_("Applicant")
)
comment = models.TextField(default='', blank=True, verbose_name=_('Comment'))
flow = models.ForeignKey(
'TicketFlow', related_name='tickets', on_delete=models.SET_NULL,
null=True, verbose_name=_('TicketFlow')
'TicketFlow', related_name='tickets', null=True,
on_delete=models.SET_NULL, verbose_name=_('TicketFlow')
)
approval_step = models.SmallIntegerField(
default=TicketLevel.one, choices=TicketLevel.choices, verbose_name=_('Approval step')
)
serial_num = models.CharField(_('Serial number'), max_length=128, unique=True, null=True)
comment = models.TextField(default='', blank=True, verbose_name=_('Comment'))
rel_snapshot = models.JSONField(verbose_name=_('Relation snapshot'), default=dict)
serial_num = models.CharField(_('Serial number'), max_length=128, unique=True, null=True)
meta = models.JSONField(encoder=ModelJSONFieldEncoder, default=dict, verbose_name=_("Meta"))
org_id = models.CharField(
max_length=36, blank=True, default='', verbose_name=_('Organization'), db_index=True