mirror of https://github.com/jumpserver/jumpserver
perf: 优化各serializer字段翻译
parent
5f48e7aeb2
commit
09303ecc56
|
@ -521,18 +521,24 @@ class SomeNodesMixin:
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def org_root(cls):
|
def org_root(cls):
|
||||||
org_roots = cls.org_root_nodes()
|
|
||||||
if org_roots:
|
|
||||||
return org_roots[0]
|
|
||||||
ori_org = get_current_org()
|
|
||||||
# 如果使用current_org 在set_current_org时会死循环
|
# 如果使用current_org 在set_current_org时会死循环
|
||||||
if ori_org.is_root():
|
ori_org = get_current_org()
|
||||||
root = cls.default_node()
|
|
||||||
elif ori_org.is_default():
|
if ori_org and ori_org.is_default():
|
||||||
root = cls.default_node()
|
return cls.default_node()
|
||||||
else:
|
if ori_org and ori_org.is_root():
|
||||||
|
return None
|
||||||
|
|
||||||
|
org_roots = cls.org_root_nodes()
|
||||||
|
org_roots_length = len(org_roots)
|
||||||
|
|
||||||
|
if org_roots_length == 1:
|
||||||
|
return org_roots[0]
|
||||||
|
elif org_roots_length == 0:
|
||||||
root = cls.create_org_root_node()
|
root = cls.create_org_root_node()
|
||||||
return root
|
return root
|
||||||
|
else:
|
||||||
|
raise ValueError('Current org root node not 1, get {}'.format(org_roots_length))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def initial_some_nodes(cls):
|
def initial_some_nodes(cls):
|
||||||
|
|
|
@ -46,6 +46,7 @@ class NodeAssetTreePagination(AssetPaginationBase):
|
||||||
node = self._view.node
|
node = self._view.node
|
||||||
if not node:
|
if not node:
|
||||||
node = Node.org_root()
|
node = Node.org_root()
|
||||||
logger.debug(f'Hit node.assets_amount[{node.assets_amount}] -> {self._request.get_full_path()}')
|
if node:
|
||||||
return node.assets_amount
|
logger.debug(f'Hit node.assets_amount[{node.assets_amount}] -> {self._request.get_full_path()}')
|
||||||
|
return node.assets_amount
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -168,7 +168,7 @@ class AssetDisplaySerializer(AssetSerializer):
|
||||||
|
|
||||||
|
|
||||||
class PlatformSerializer(serializers.ModelSerializer):
|
class PlatformSerializer(serializers.ModelSerializer):
|
||||||
meta = serializers.DictField(required=False, allow_null=True)
|
meta = serializers.DictField(required=False, allow_null=True, label=_('Meta'))
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from common.drf.serializers import AdaptedBulkListSerializer
|
from common.drf.serializers import AdaptedBulkListSerializer
|
||||||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||||||
|
@ -9,16 +10,17 @@ from ..models import Label
|
||||||
|
|
||||||
|
|
||||||
class LabelSerializer(BulkOrgResourceModelSerializer):
|
class LabelSerializer(BulkOrgResourceModelSerializer):
|
||||||
asset_count = serializers.SerializerMethodField()
|
asset_count = serializers.SerializerMethodField(label=_("Assets amount"))
|
||||||
|
category_display = serializers.ReadOnlyField(source='get_category_display', label=_('Category display'))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Label
|
model = Label
|
||||||
fields = [
|
fields = [
|
||||||
'id', 'name', 'value', 'category', 'is_active', 'comment',
|
'id', 'name', 'value', 'category', 'is_active', 'comment',
|
||||||
'date_created', 'asset_count', 'assets', 'get_category_display'
|
'date_created', 'asset_count', 'assets', 'category_display'
|
||||||
]
|
]
|
||||||
read_only_fields = (
|
read_only_fields = (
|
||||||
'category', 'date_created', 'asset_count', 'get_category_display'
|
'category', 'date_created', 'asset_count',
|
||||||
)
|
)
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'assets': {'required': False}
|
'assets': {'required': False}
|
||||||
|
|
|
@ -33,7 +33,7 @@ class SystemUserSerializer(AuthSerializerMixin, BulkOrgResourceModelSerializer):
|
||||||
'priority', 'username_same_with_user',
|
'priority', 'username_same_with_user',
|
||||||
'auto_push', 'cmd_filters', 'sudo', 'shell', 'comment',
|
'auto_push', 'cmd_filters', 'sudo', 'shell', 'comment',
|
||||||
'auto_generate_key', 'sftp_root', 'token',
|
'auto_generate_key', 'sftp_root', 'token',
|
||||||
'assets_amount', 'date_created', 'created_by',
|
'assets_amount', 'date_created', 'date_updated', 'created_by',
|
||||||
'home', 'system_groups', 'ad_domain'
|
'home', 'system_groups', 'ad_domain'
|
||||||
]
|
]
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
|
@ -155,7 +155,8 @@ class SystemUserListSerializer(SystemUserSerializer):
|
||||||
'auto_push', 'sudo', 'shell', 'comment',
|
'auto_push', 'sudo', 'shell', 'comment',
|
||||||
"assets_amount", 'home', 'system_groups',
|
"assets_amount", 'home', 'system_groups',
|
||||||
'auto_generate_key', 'ad_domain',
|
'auto_generate_key', 'ad_domain',
|
||||||
'sftp_root',
|
'sftp_root', 'created_by', 'date_created',
|
||||||
|
'date_updated',
|
||||||
]
|
]
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'password': {"write_only": True},
|
'password': {"write_only": True},
|
||||||
|
|
|
@ -40,7 +40,7 @@ class ActionsDisplayField(ActionsField):
|
||||||
class AssetPermissionSerializer(BulkOrgResourceModelSerializer):
|
class AssetPermissionSerializer(BulkOrgResourceModelSerializer):
|
||||||
actions = ActionsField(required=False, allow_null=True)
|
actions = ActionsField(required=False, allow_null=True)
|
||||||
is_valid = serializers.BooleanField(read_only=True)
|
is_valid = serializers.BooleanField(read_only=True)
|
||||||
is_expired = serializers.BooleanField(read_only=True)
|
is_expired = serializers.BooleanField(read_only=True, label=_('Is expired'))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = AssetPermission
|
model = AssetPermission
|
||||||
|
|
|
@ -667,6 +667,13 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, AbstractUser):
|
||||||
else:
|
else:
|
||||||
return user_default
|
return user_default
|
||||||
|
|
||||||
|
@property
|
||||||
|
def login_blocked(self):
|
||||||
|
key_prefix_block = "_LOGIN_BLOCK_{}"
|
||||||
|
key_block = key_prefix_block.format(self.username)
|
||||||
|
blocked = bool(cache.get(key_block))
|
||||||
|
return blocked
|
||||||
|
|
||||||
def delete(self, using=None, keep_parents=False):
|
def delete(self, using=None, keep_parents=False):
|
||||||
if self.pk == 1 or self.username == 'admin':
|
if self.pk == 1 or self.username == 'admin':
|
||||||
return
|
return
|
||||||
|
|
|
@ -27,15 +27,17 @@ class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer):
|
||||||
choices=PASSWORD_STRATEGY_CHOICES, required=False,
|
choices=PASSWORD_STRATEGY_CHOICES, required=False,
|
||||||
label=_('Password strategy'), write_only=True, default=0
|
label=_('Password strategy'), write_only=True, default=0
|
||||||
)
|
)
|
||||||
|
mfa_enabled = serializers.BooleanField(label=_('MFA enabled'))
|
||||||
|
mfa_force_enabled = serializers.BooleanField(label=_('MFA force enabled'))
|
||||||
mfa_level_display = serializers.ReadOnlyField(source='get_mfa_level_display', label=_('MFA level for display'))
|
mfa_level_display = serializers.ReadOnlyField(source='get_mfa_level_display', label=_('MFA level for display'))
|
||||||
login_blocked = serializers.SerializerMethodField(label=_('Login blocked'))
|
login_blocked = serializers.BooleanField(label=_('Login blocked'))
|
||||||
|
is_expired = serializers.BooleanField(label=_('Is expired'))
|
||||||
can_update = serializers.SerializerMethodField(label=_('Can update'))
|
can_update = serializers.SerializerMethodField(label=_('Can update'))
|
||||||
can_delete = serializers.SerializerMethodField(label=_('Can delete'))
|
can_delete = serializers.SerializerMethodField(label=_('Can delete'))
|
||||||
org_roles = serializers.ListField(
|
org_roles = serializers.ListField(
|
||||||
label=_('Organization role name'), allow_null=True, required=False,
|
label=_('Organization role name'), allow_null=True, required=False,
|
||||||
child=serializers.ChoiceField(choices=ORG_ROLE.choices), default=["User"]
|
child=serializers.ChoiceField(choices=ORG_ROLE.choices), default=["User"]
|
||||||
)
|
)
|
||||||
key_prefix_block = "_LOGIN_BLOCK_{}"
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
|
@ -72,8 +74,6 @@ class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer):
|
||||||
'org_role_display': {'label': _('Organization role name')},
|
'org_role_display': {'label': _('Organization role name')},
|
||||||
'role_display': {'label': _('Super role name')},
|
'role_display': {'label': _('Super role name')},
|
||||||
'total_role_display': {'label': _('Total role name')},
|
'total_role_display': {'label': _('Total role name')},
|
||||||
'mfa_enabled': {'label': _('MFA enabled')},
|
|
||||||
'mfa_force_enabled': {'label': _('MFA force enabled')},
|
|
||||||
'role': {'default': "User"},
|
'role': {'default': "User"},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,11 +144,6 @@ class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer):
|
||||||
self.context['request'], self.context['view'], obj
|
self.context['request'], self.context['view'], obj
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_login_blocked(self, obj):
|
|
||||||
key_block = self.key_prefix_block.format(obj.username)
|
|
||||||
blocked = bool(cache.get(key_block))
|
|
||||||
return blocked
|
|
||||||
|
|
||||||
|
|
||||||
class UserRetrieveSerializer(UserSerializer):
|
class UserRetrieveSerializer(UserSerializer):
|
||||||
login_confirm_settings = serializers.PrimaryKeyRelatedField(read_only=True,
|
login_confirm_settings = serializers.PrimaryKeyRelatedField(read_only=True,
|
||||||
|
|
Loading…
Reference in New Issue