diff --git a/apps/tickets/handler/apply_application.py b/apps/tickets/handler/apply_application.py index 399f71782..28eb82697 100644 --- a/apps/tickets/handler/apply_application.py +++ b/apps/tickets/handler/apply_application.py @@ -4,7 +4,6 @@ from applications.models import Application from applications.const import ApplicationCategoryChoices, ApplicationTypeChoices from assets.models import SystemUser from perms.models import ApplicationPermission -from tickets.utils import convert_model_data_field_name_to_verbose_name from .base import BaseHandler @@ -26,22 +25,15 @@ class Handler(BaseHandler): return meta_display def _construct_meta_display_of_approve(self): - meta_display_fields = ['approve_applications_snapshot', 'approve_system_users_snapshot'] + meta_display_fields = ['approve_applications_display', 'approve_system_users_display'] approve_applications_id = self.ticket.meta.get('approve_applications', []) approve_system_users_id = self.ticket.meta.get('approve_system_users', []) with tmp_to_org(self.ticket.org_id): - approve_applications_snapshot = list( - Application.objects.filter(id__in=approve_applications_id).values( - 'name', 'category', 'type' - ) - ) - approve_system_users_snapshot = list( - SystemUser.objects.filter(id__in=approve_system_users_id).values( - 'name', 'username', 'username_same_with_user', 'protocol', - 'auto_push', 'sudo', 'home', 'sftp_root' - ) - ) - meta_display_values = [approve_applications_snapshot, approve_system_users_snapshot] + approve_applications = Application.objects.filter(id__in=approve_applications_id) + system_users = SystemUser.objects.filter(id__in=approve_system_users_id) + approve_applications_display = [str(application) for application in approve_applications] + approve_system_users_display = [str(system_user) for system_user in system_users] + meta_display_values = [approve_applications_display, approve_system_users_display] meta_display = dict(zip(meta_display_fields, meta_display_values)) return meta_display @@ -71,14 +63,8 @@ class Handler(BaseHandler): def _construct_meta_body_of_approve(self): # 审批信息 - approve_applications_snapshot = self.ticket.meta.get('approve_applications_snapshot', []) - approve_applications_snapshot_display = convert_model_data_field_name_to_verbose_name( - model=Application, data=approve_applications_snapshot - ) - approve_system_users_snapshot = self.ticket.meta.get('approve_system_users_snapshot', []) - approve_system_users_snapshot_display = convert_model_data_field_name_to_verbose_name( - model=SystemUser, data=approve_system_users_snapshot - ) + approve_applications_display = self.ticket.meta.get('approve_applications_display', []) + approve_system_users_display = self.ticket.meta.get('approve_system_users_display', []) approve_date_start = self.ticket.meta.get('approve_date_start') approve_date_expired = self.ticket.meta.get('approve_date_expired') approved_body = '''{}: {}, @@ -86,8 +72,8 @@ class Handler(BaseHandler): {}: {}, {}: {}, '''.format( - __('Approved applications'), approve_applications_snapshot_display, - __('Approved system users'), approve_system_users_snapshot_display, + __('Approved applications'), approve_applications_display, + __('Approved system users'), approve_system_users_display, __('Approved date start'), approve_date_start, __('Approved date expired'), approve_date_expired ) diff --git a/apps/tickets/handler/apply_asset.py b/apps/tickets/handler/apply_asset.py index d40c635b9..4114c04b3 100644 --- a/apps/tickets/handler/apply_asset.py +++ b/apps/tickets/handler/apply_asset.py @@ -4,7 +4,6 @@ from django.utils.translation import ugettext as __ from perms.models import AssetPermission, Action from assets.models import Asset, SystemUser from orgs.utils import tmp_to_org, tmp_to_root_org -from tickets.utils import convert_model_data_field_name_to_verbose_name class Handler(BaseHandler): @@ -24,26 +23,19 @@ class Handler(BaseHandler): def _construct_meta_display_of_approve(self): meta_display_fields = [ - 'approve_actions_display', 'approve_assets_snapshot', 'approve_system_users_snapshot' + 'approve_actions_display', 'approve_assets_display', 'approve_system_users_display' ] approve_actions = self.ticket.meta.get('approve_actions', Action.NONE) approve_actions_display = Action.value_to_choices_display(approve_actions) approve_assets_id = self.ticket.meta.get('approve_assets', []) approve_system_users_id = self.ticket.meta.get('approve_system_users', []) with tmp_to_org(self.ticket.org_id): - approve_assets_snapshot = list( - Asset.objects.filter(id__in=approve_assets_id).values( - 'hostname', 'ip', 'protocols', 'platform__name', 'public_ip' - ) - ) - approve_system_users_snapshot = list( - SystemUser.objects.filter(id__in=approve_system_users_id).values( - 'name', 'username', 'username_same_with_user', 'protocol', - 'auto_push', 'sudo', 'home', 'sftp_root' - ) - ) + assets = Asset.objects.filter(id__in=approve_assets_id) + system_users = SystemUser.objects.filter(id__in=approve_system_users_id) + approve_assets_display = [str(asset) for asset in assets] + approve_system_users_display = [str(system_user) for system_user in system_users] meta_display_values = [ - approve_actions_display, approve_assets_snapshot, approve_system_users_snapshot + approve_actions_display, approve_assets_display, approve_system_users_display ] meta_display = dict(zip(meta_display_fields, meta_display_values)) return meta_display @@ -72,14 +64,8 @@ class Handler(BaseHandler): return applied_body def _construct_meta_body_of_approve(self): - approve_assets_snapshot = self.ticket.meta.get('approve_assets_snapshot', []) - approve_assets_snapshot_display = convert_model_data_field_name_to_verbose_name( - model=Asset, data=approve_assets_snapshot - ) - approve_system_users_snapshot = self.ticket.meta.get('approve_system_users_snapshot', []) - approve_system_users_snapshot_display = convert_model_data_field_name_to_verbose_name( - model=SystemUser, data=approve_system_users_snapshot - ) + approve_assets_display = self.ticket.meta.get('approve_assets_display', []) + approve_system_users_display = self.ticket.meta.get('approve_system_users_display', []) approve_actions_display = self.ticket.meta.get('approve_actions_display', []) approve_date_start = self.ticket.meta.get('approve_date_start') approve_date_expired = self.ticket.meta.get('approve_date_expired') @@ -89,8 +75,8 @@ class Handler(BaseHandler): {}: {}, {}: {} '''.format( - __('Approved assets'), approve_assets_snapshot_display, - __('Approved system users'), approve_system_users_snapshot_display, + __('Approved assets'), approve_assets_display, + __('Approved system users'), approve_system_users_display, __('Approved actions'), ', '.join(approve_actions_display), __('Approved date start'), approve_date_start, __('Approved date expired'), approve_date_expired, diff --git a/apps/tickets/migrations/0007_auto_20201224_1821.py b/apps/tickets/migrations/0007_auto_20201224_1821.py index a0ffcd3a0..a16771ef9 100644 --- a/apps/tickets/migrations/0007_auto_20201224_1821.py +++ b/apps/tickets/migrations/0007_auto_20201224_1821.py @@ -29,9 +29,9 @@ def migrate_field_meta(tp, old_meta): 'apply_date_expired': old_meta.get('date_expired'), 'approve_assets': old_meta.get('confirmed_assets', []), - 'approve_assets_snapshot': [], + 'approve_assets_display': [], 'approve_system_users': old_meta.get('confirmed_system_users', []), - 'approve_system_users_snapshot': [], + 'approve_system_users_display': [], 'approve_actions': old_meta.get('actions'), 'approve_actions_display': [], 'approve_date_start': old_meta.get('date_start'), diff --git a/apps/tickets/serializers/ticket/meta/ticket_type/apply_application.py b/apps/tickets/serializers/ticket/meta/ticket_type/apply_application.py index 50cd05a8f..220c04199 100644 --- a/apps/tickets/serializers/ticket/meta/ticket_type/apply_application.py +++ b/apps/tickets/serializers/ticket/meta/ticket_type/apply_application.py @@ -51,7 +51,7 @@ class ApproveSerializer(serializers.Serializer): required=True, child=serializers.UUIDField(), label=_('Approve applications'), allow_null=True ) - approve_applications_snapshot = serializers.ListField( + approve_applications_display = serializers.ListField( required=False, read_only=True, child=serializers.CharField(), label=_('Approve applications display'), allow_null=True, default=list @@ -60,7 +60,7 @@ class ApproveSerializer(serializers.Serializer): required=True, child=serializers.UUIDField(), label=_('Approve system users'), allow_null=True ) - approve_system_users_snapshot = serializers.ListField( + approve_system_users_display = serializers.ListField( required=False, read_only=True, child=serializers.CharField(), label=_('Approve system user display'), allow_null=True, default=list diff --git a/apps/tickets/serializers/ticket/meta/ticket_type/apply_asset.py b/apps/tickets/serializers/ticket/meta/ticket_type/apply_asset.py index 32f880e0c..ab613e19c 100644 --- a/apps/tickets/serializers/ticket/meta/ticket_type/apply_asset.py +++ b/apps/tickets/serializers/ticket/meta/ticket_type/apply_asset.py @@ -47,8 +47,8 @@ class ApproveSerializer(serializers.Serializer): approve_assets = serializers.ListField( required=True, allow_null=True, child=serializers.UUIDField(), label=_('Approve assets') ) - approve_assets_snapshot = serializers.ListField( - required=False, read_only=True, child=serializers.DictField(), + approve_assets_display = serializers.ListField( + required=False, read_only=True, child=serializers.CharField(), label=_('Approve assets display'), allow_null=True, default=list, ) @@ -56,8 +56,8 @@ class ApproveSerializer(serializers.Serializer): required=True, allow_null=True, child=serializers.UUIDField(), label=_('Approve system users') ) - approve_system_users_snapshot = serializers.ListField( - required=False, read_only=True, child=serializers.DictField(), + approve_system_users_display = serializers.ListField( + required=False, read_only=True, child=serializers.CharField(), label=_('Approve assets display'), allow_null=True, default=list, ) diff --git a/apps/tickets/utils.py b/apps/tickets/utils.py index 9c626ef5a..ebd4c22b8 100644 --- a/apps/tickets/utils.py +++ b/apps/tickets/utils.py @@ -11,25 +11,6 @@ from . import const logger = get_logger(__file__) -def get_model_field_verbose_name(model, field_name): - field_name_field_verbose_name_mapping = { - field.name: field.verbose_name for field in model._meta.fields - } - field_name = field_name.split('__', 1)[0] - field_verbose_name = field_name_field_verbose_name_mapping.get(field_name, field_name) - return field_verbose_name - - -def convert_model_data_field_name_to_verbose_name(model, data): - if isinstance(data, dict): - data = [data] - converted_data = [ - {get_model_field_verbose_name(model, name): value for name, value in d.items()} - for d in data - ] - return converted_data - - def send_ticket_applied_mail_to_assignees(ticket, assignees): if not assignees: logger.debug("Not found assignees, ticket: {}({}), assignees: {}".format(