perf(application): RemoteApp应用序列类返回asset_info字段

pull/4886/head
Bai 2020-10-29 18:17:41 +08:00 committed by 老广
parent bf302f47e5
commit 5e7650d719
1 changed files with 20 additions and 0 deletions

View File

@ -8,12 +8,15 @@ from rest_framework import serializers
from common.serializers import AdaptedBulkListSerializer from common.serializers import AdaptedBulkListSerializer
from common.fields.serializer import CustomMetaDictField from common.fields.serializer import CustomMetaDictField
from common.utils import get_logger
from orgs.mixins.serializers import BulkOrgResourceModelSerializer from orgs.mixins.serializers import BulkOrgResourceModelSerializer
from assets.models import Asset from assets.models import Asset
from .. import const from .. import const
from ..models import RemoteApp, Category, Application from ..models import RemoteApp, Category, Application
logger = get_logger(__file__)
class CharPrimaryKeyRelatedField(serializers.PrimaryKeyRelatedField): class CharPrimaryKeyRelatedField(serializers.PrimaryKeyRelatedField):
@ -35,9 +38,26 @@ class CharPrimaryKeyRelatedField(serializers.PrimaryKeyRelatedField):
class RemoteAppAttrsSerializer(serializers.Serializer): class RemoteAppAttrsSerializer(serializers.Serializer):
asset_info = serializers.SerializerMethodField()
asset = CharPrimaryKeyRelatedField(queryset=Asset.objects, required=False, label=_("Assets")) asset = CharPrimaryKeyRelatedField(queryset=Asset.objects, required=False, label=_("Assets"))
path = serializers.CharField(max_length=128, label=_('Remote App path')) path = serializers.CharField(max_length=128, label=_('Remote App path'))
@staticmethod
def get_asset_info(obj):
asset_info = {}
asset_id = obj.get('asset')
if not asset_id:
return asset_info
try:
asset = Asset.objects.get(id=asset_id)
asset_info.update({
'id': str(asset.id),
'hostname': asset.hostname
})
except ObjectDoesNotExist as e:
logger.error(e)
return asset_info
class ChromeAttrsSerializer(RemoteAppAttrsSerializer): class ChromeAttrsSerializer(RemoteAppAttrsSerializer):
REMOTE_APP_PATH = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe' REMOTE_APP_PATH = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'