mirror of https://github.com/jumpserver/jumpserver
parent
52891bfca3
commit
cf197f7efc
|
@ -34,6 +34,7 @@ class AccountCreateUpdateSerializerMixin(serializers.Serializer):
|
|||
choices=AccountInvalidPolicy.choices, default=AccountInvalidPolicy.ERROR,
|
||||
write_only=True, label=_('Exist policy')
|
||||
)
|
||||
_template = None
|
||||
|
||||
class Meta:
|
||||
fields = ['template', 'push_now', 'params', 'on_invalid']
|
||||
|
@ -69,9 +70,8 @@ class AccountCreateUpdateSerializerMixin(serializers.Serializer):
|
|||
name = name + '_' + uuid.uuid4().hex[:4]
|
||||
initial_data['name'] = name
|
||||
|
||||
@staticmethod
|
||||
def from_template_if_need(initial_data):
|
||||
template_id = initial_data.get('template')
|
||||
def from_template_if_need(self, initial_data):
|
||||
template_id = initial_data.pop('template', None)
|
||||
if not template_id:
|
||||
return
|
||||
if isinstance(template_id, (str, uuid.UUID)):
|
||||
|
@ -81,6 +81,7 @@ class AccountCreateUpdateSerializerMixin(serializers.Serializer):
|
|||
if not template:
|
||||
raise serializers.ValidationError({'template': 'Template not found'})
|
||||
|
||||
self._template = template
|
||||
# Set initial data from template
|
||||
ignore_fields = ['id', 'date_created', 'date_updated', 'org_id']
|
||||
field_names = [
|
||||
|
@ -137,20 +138,17 @@ class AccountCreateUpdateSerializerMixin(serializers.Serializer):
|
|||
else:
|
||||
raise serializers.ValidationError('Account already exists')
|
||||
|
||||
def validate(self, attrs):
|
||||
attrs = super().validate(attrs)
|
||||
if self.instance:
|
||||
return attrs
|
||||
|
||||
template = attrs.pop('template', None)
|
||||
if template:
|
||||
attrs['source'] = Source.TEMPLATE
|
||||
attrs['source_id'] = str(template.id)
|
||||
return attrs
|
||||
def generate_source_data(self, validated_data):
|
||||
template = self._template
|
||||
if template is None:
|
||||
return
|
||||
validated_data['source'] = Source.TEMPLATE
|
||||
validated_data['source_id'] = str(template.id)
|
||||
|
||||
def create(self, validated_data):
|
||||
push_now = validated_data.pop('push_now', None)
|
||||
params = validated_data.pop('params', None)
|
||||
self.generate_source_data(validated_data)
|
||||
instance, stat = self.do_create(validated_data)
|
||||
self.push_account_if_need(instance, push_now, params, stat)
|
||||
return instance
|
||||
|
@ -368,6 +366,7 @@ class AssetAccountBulkSerializer(
|
|||
|
||||
def create(self, validated_data):
|
||||
push_now = validated_data.pop('push_now', False)
|
||||
self.generate_source_data(validated_data)
|
||||
results = self.perform_bulk_create(validated_data)
|
||||
self.push_accounts_if_need(results, push_now)
|
||||
for res in results:
|
||||
|
|
Loading…
Reference in New Issue