diff --git a/apps/applications/serializers/remote_app.py b/apps/applications/serializers/remote_app.py index 168a02280..a6c1c557c 100644 --- a/apps/applications/serializers/remote_app.py +++ b/apps/applications/serializers/remote_app.py @@ -5,6 +5,7 @@ from rest_framework import serializers from common.serializers import AdaptedBulkListSerializer +from common.fields.serializer import CustomMetaDictField from orgs.mixins.serializers import BulkOrgResourceModelSerializer from .. import const @@ -16,54 +17,9 @@ __all__ = [ ] -class RemoteAppParamsDictField(serializers.DictField): - """ - RemoteApp field => params - """ - @staticmethod - def filter_attribute(attribute, instance): - """ - 过滤掉params字段值中write_only特性的key-value值 - For example, the chrome_password field is not returned when serializing - { - 'chrome_target': 'http://www.jumpserver.org/', - 'chrome_username': 'admin', - 'chrome_password': 'admin', - } - """ - for field in const.REMOTE_APP_TYPE_MAP_FIELDS[instance.type]: - if field.get('write_only', False): - attribute.pop(field['name'], None) - return attribute - - def get_attribute(self, instance): - """ - 序列化时调用 - """ - attribute = super().get_attribute(instance) - attribute = self.filter_attribute(attribute, instance) - return attribute - - @staticmethod - def filter_value(dictionary, value): - """ - 过滤掉不属于当前app_type所包含的key-value值 - """ - app_type = dictionary.get('type', const.REMOTE_APP_TYPE_CHROME) - fields = const.REMOTE_APP_TYPE_MAP_FIELDS[app_type] - fields_names = [field['name'] for field in fields] - no_need_keys = [k for k in value.keys() if k not in fields_names] - for k in no_need_keys: - value.pop(k) - return value - - def get_value(self, dictionary): - """ - 反序列化时调用 - """ - value = super().get_value(dictionary) - value = self.filter_value(dictionary, value) - return value +class RemoteAppParamsDictField(CustomMetaDictField): + type_map_fields = const.REMOTE_APP_TYPE_MAP_FIELDS + default_type = const.REMOTE_APP_TYPE_CHROME class RemoteAppSerializer(BulkOrgResourceModelSerializer): diff --git a/apps/applications/templates/applications/remote_app_create_update.html b/apps/applications/templates/applications/remote_app_create_update.html index b193dfff5..ad7a65545 100644 --- a/apps/applications/templates/applications/remote_app_create_update.html +++ b/apps/applications/templates/applications/remote_app_create_update.html @@ -19,14 +19,14 @@