mirror of https://github.com/jumpserver/jumpserver
parent
4c7c8f482d
commit
4654756966
|
@ -68,7 +68,7 @@ class AccountCreateUpdateSerializerMixin(serializers.Serializer):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_template_if_need(initial_data):
|
def from_template_if_need(initial_data):
|
||||||
template_id = initial_data.pop('template', None)
|
template_id = initial_data.get('template')
|
||||||
if not template_id:
|
if not template_id:
|
||||||
return
|
return
|
||||||
if isinstance(template_id, (str, uuid.UUID)):
|
if isinstance(template_id, (str, uuid.UUID)):
|
||||||
|
@ -84,7 +84,7 @@ class AccountCreateUpdateSerializerMixin(serializers.Serializer):
|
||||||
field.name for field in template._meta.fields
|
field.name for field in template._meta.fields
|
||||||
if field.name not in ignore_fields
|
if field.name not in ignore_fields
|
||||||
]
|
]
|
||||||
attrs = {'source': Source.TEMPLATE, 'source_id': str(template.id)}
|
attrs = {}
|
||||||
for name in field_names:
|
for name in field_names:
|
||||||
value = getattr(template, name, None)
|
value = getattr(template, name, None)
|
||||||
if value is None:
|
if value is None:
|
||||||
|
@ -139,9 +139,10 @@ class AccountCreateUpdateSerializerMixin(serializers.Serializer):
|
||||||
if self.instance:
|
if self.instance:
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
if 'source' in self.initial_data:
|
template = attrs.pop('template', None)
|
||||||
attrs['source'] = self.initial_data['source']
|
if template:
|
||||||
attrs['source_id'] = self.initial_data['source_id']
|
attrs['source'] = Source.TEMPLATE
|
||||||
|
attrs['source_id'] = str(template.id)
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
|
|
|
@ -67,6 +67,26 @@ class AssetPlatformSerializer(serializers.ModelSerializer):
|
||||||
class AssetAccountSerializer(AccountSerializer):
|
class AssetAccountSerializer(AccountSerializer):
|
||||||
add_org_fields = False
|
add_org_fields = False
|
||||||
asset = serializers.PrimaryKeyRelatedField(queryset=Asset.objects, required=False, write_only=True)
|
asset = serializers.PrimaryKeyRelatedField(queryset=Asset.objects, required=False, write_only=True)
|
||||||
|
clone_id: str
|
||||||
|
|
||||||
|
def to_internal_value(self, data):
|
||||||
|
clone_id = data.pop('id', None)
|
||||||
|
ret = super().to_internal_value(data)
|
||||||
|
self.clone_id = clone_id
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def set_secret(self, attrs):
|
||||||
|
_id = self.clone_id
|
||||||
|
if not _id:
|
||||||
|
return attrs
|
||||||
|
|
||||||
|
account = Account.objects.get(id=_id)
|
||||||
|
attrs['secret'] = account.secret
|
||||||
|
return attrs
|
||||||
|
|
||||||
|
def validate(self, attrs):
|
||||||
|
attrs = super().validate(attrs)
|
||||||
|
return self.set_secret(attrs)
|
||||||
|
|
||||||
class Meta(AccountSerializer.Meta):
|
class Meta(AccountSerializer.Meta):
|
||||||
fields = [
|
fields = [
|
||||||
|
|
Loading…
Reference in New Issue