From 4a32016f14cbb11e53383a4124504bb33897fe64 Mon Sep 17 00:00:00 2001 From: xinwen Date: Tue, 15 Dec 2020 12:21:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B7=A5=E5=8D=95=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E8=B5=84=E4=BA=A7=E5=AE=A1=E6=89=B9=E6=97=B6=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B2=A1=E6=9C=89=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tickets/serializers/request_asset_perm.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/apps/tickets/serializers/request_asset_perm.py b/apps/tickets/serializers/request_asset_perm.py index 77757ff62..83c480e61 100644 --- a/apps/tickets/serializers/request_asset_perm.py +++ b/apps/tickets/serializers/request_asset_perm.py @@ -1,5 +1,3 @@ -from itertools import chain - from rest_framework import serializers from django.conf import settings from django.utils.translation import ugettext_lazy as _ @@ -9,7 +7,7 @@ from django.db.models import Q from common.utils.timezone import dt_parser, dt_formater from orgs.utils import tmp_to_root_org from orgs.models import Organization, ROLE as ORG_ROLE -from assets.models.asset import Asset +from assets.models import Asset, SystemUser from users.models.user import User from perms.serializers import ActionsField from perms.models import Action @@ -130,12 +128,23 @@ class RequestAssetPermTicketSerializer(serializers.ModelSerializer): if hostname: q |= Q(hostname__icontains=hostname) - data['confirmed_assets'] = list( - map(lambda x: str(x), chain(*Asset.objects.filter(q)[0: limit].values_list('id')))) + recomand_assets_id = Asset.objects.filter(q)[:limit].values_list('id', flat=True) + data['confirmed_assets'] = [str(i) for i in recomand_assets_id] + + def _recommend_system_users(self, data, instance): + confirmed_system_users = data.get('confirmed_system_users') + if not confirmed_system_users and self._is_assignee(instance): + system_user = data.get('system_user') + + recomand_system_users_id = SystemUser.objects.filter( + name__icontains=system_user + )[:3].values_list('id', flat=True) + data['confirmed_system_users'] = [str(i) for i in recomand_system_users_id] def to_representation(self, instance): data = super().to_representation(instance) self._recommend_assets(data, instance) + self._recommend_system_users(data, instance) return data def _create_body(self, validated_data):