mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-07-01 14:36:33 +00:00
fix: Platform error translate (#16947)
* fix: Import prompts a interal error when the label is too long * fix: Platform error translate --------- Co-authored-by: wangruidong <940853815@qq.com>
This commit is contained in:
@@ -15,6 +15,7 @@ from common.serializers import (
|
||||
)
|
||||
from common.serializers.common import DictSerializer
|
||||
from common.serializers.fields import LabeledChoiceField, ObjectRelatedField
|
||||
from django.utils.translation import gettext
|
||||
from labels.models import Label
|
||||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||||
from ...const import Category, AllTypes
|
||||
@@ -266,10 +267,10 @@ class AssetSerializer(BulkOrgResourceModelSerializer, ResourceLabelsMixin, Writa
|
||||
try:
|
||||
platform = self.fields['platform'].to_internal_value(platform_data)
|
||||
except serializers.ValidationError as exc:
|
||||
raise serializers.ValidationError({'platform': exc.detail})
|
||||
raise serializers.ValidationError({gettext('Platform'): exc.detail})
|
||||
|
||||
if not platform:
|
||||
raise serializers.ValidationError({'platform': _("Platform not exist")})
|
||||
raise serializers.ValidationError({gettext('Platform'): _("Platform not exist")})
|
||||
return platform
|
||||
|
||||
def validate_zone(self, value):
|
||||
|
||||
@@ -137,7 +137,14 @@ class LabelRelatedField(serializers.RelatedField):
|
||||
k, v = [x.strip() for x in data.split(":", 1)]
|
||||
else:
|
||||
raise serializers.ValidationError(_("Invalid data type"))
|
||||
label, __ = Label.objects.get_or_create(name=k, value=v, defaults={'name': k, 'value': v})
|
||||
from labels.serializers import LabelSerializer
|
||||
|
||||
validated = LabelSerializer.validate_name_value(k, v)
|
||||
label, __ = Label.objects.get_or_create(
|
||||
name=validated['name'],
|
||||
value=validated['value'],
|
||||
defaults=validated,
|
||||
)
|
||||
return LabeledResource(label=label)
|
||||
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ from django.utils.translation import gettext_lazy as _
|
||||
from rest_framework import serializers
|
||||
|
||||
from common.serializers.fields import ObjectRelatedField, LabeledChoiceField
|
||||
from common.validators import ProjectUniqueValidator
|
||||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||||
from .const import label_resource_types
|
||||
from .models import Label, LabeledResource
|
||||
@@ -31,6 +32,16 @@ class LabelSerializer(BulkOrgResourceModelSerializer):
|
||||
def validate_value(self, value):
|
||||
return self.validate_name(value)
|
||||
|
||||
@classmethod
|
||||
def validate_name_value(cls, name, value):
|
||||
serializer = cls(data={'name': name, 'value': value})
|
||||
serializer.validators = [
|
||||
v for v in serializer.validators
|
||||
if not isinstance(v, (serializers.UniqueTogetherValidator, ProjectUniqueValidator))
|
||||
]
|
||||
serializer.is_valid(raise_exception=True)
|
||||
return serializer.validated_data
|
||||
|
||||
@classmethod
|
||||
def setup_eager_loading(cls, queryset):
|
||||
""" Perform necessary eager loading of data. """
|
||||
|
||||
Reference in New Issue
Block a user