From 4956e1147ec38a4cad6c7a6cfc94f4658c7732c0 Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 1 Feb 2023 11:26:57 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=20=E8=A7=92=E8=89=B2=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/serializers/user.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 7baa4117b..7e2c6ea33 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -5,8 +5,8 @@ from functools import partial from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers -from common.serializers.fields import EncryptedField, ObjectRelatedField, LabeledChoiceField from common.serializers import CommonBulkSerializerMixin +from common.serializers.fields import EncryptedField, ObjectRelatedField, LabeledChoiceField from common.utils import pretty_string, get_logger from common.validators import PhoneValidator from rbac.builtin import BuiltinRole @@ -25,24 +25,25 @@ __all__ = [ logger = get_logger(__file__) +def default_system_roles(): + return [BuiltinRole.system_user.get_role()] + + +def default_org_roles(): + return [BuiltinRole.org_user.get_role()] + + class RolesSerializerMixin(serializers.Serializer): system_roles = ObjectRelatedField( queryset=Role.system_roles, attrs=('id', 'display_name'), - label=_("System roles"), many=True + label=_("System roles"), many=True, default=default_system_roles ) org_roles = ObjectRelatedField( queryset=Role.org_roles, attrs=('id', 'display_name'), - label=_("Org roles"), many=True + label=_("Org roles"), many=True, required=False, + default=default_org_roles ) - @staticmethod - def get_system_roles_display(user): - return user.system_roles.display - - @staticmethod - def get_org_roles_display(user): - return user.org_roles.display - def pop_roles_if_need(self, fields): request = self.context.get("request") view = self.context.get("view") @@ -55,6 +56,7 @@ class RolesSerializerMixin(serializers.Serializer): action = view.action or "list" if action in ("partial_bulk_update", "bulk_update", "partial_update", "update"): action = "create" + model_cls_field_mapper = { SystemRoleBinding: ["system_roles"], OrgRoleBinding: ["org_roles"],