mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-14 22:39:10 +00:00
perf: Create account unique message
This commit is contained in:
@@ -253,6 +253,8 @@ class AccountSerializer(AccountCreateUpdateSerializerMixin, BaseAccountSerialize
|
|||||||
'source_id': {'required': False, 'allow_null': True},
|
'source_id': {'required': False, 'allow_null': True},
|
||||||
}
|
}
|
||||||
fields_unimport_template = ['params']
|
fields_unimport_template = ['params']
|
||||||
|
# 手动判断唯一性校验
|
||||||
|
validators = []
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setup_eager_loading(cls, queryset):
|
def setup_eager_loading(cls, queryset):
|
||||||
@@ -263,6 +265,21 @@ class AccountSerializer(AccountCreateUpdateSerializerMixin, BaseAccountSerialize
|
|||||||
)
|
)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
def validate(self, attrs):
|
||||||
|
instance = getattr(self, "instance", None)
|
||||||
|
if instance:
|
||||||
|
return super().validate(attrs)
|
||||||
|
|
||||||
|
field_errors = {}
|
||||||
|
for _fields in Account._meta.unique_together:
|
||||||
|
lookup = {field: attrs.get(field) for field in _fields}
|
||||||
|
if Account.objects.filter(**lookup).exists():
|
||||||
|
verbose_names = ', '.join([str(Account._meta.get_field(f).verbose_name) for f in _fields])
|
||||||
|
msg_template = _('Account already exists. Field(s): {fields} must be unique.')
|
||||||
|
field_errors[_fields[0]] = msg_template.format(fields=verbose_names)
|
||||||
|
raise serializers.ValidationError(field_errors)
|
||||||
|
return attrs
|
||||||
|
|
||||||
|
|
||||||
class AccountDetailSerializer(AccountSerializer):
|
class AccountDetailSerializer(AccountSerializer):
|
||||||
has_secret = serializers.BooleanField(label=_("Has secret"), read_only=True)
|
has_secret = serializers.BooleanField(label=_("Has secret"), read_only=True)
|
||||||
|
Reference in New Issue
Block a user