perf: acl

pull/9044/head
feng 2022-11-09 20:51:43 +08:00
parent becb10a453
commit 2f611009dc
1 changed files with 10 additions and 8 deletions

View File

@ -2,7 +2,9 @@ from django.utils.translation import ugettext as _
from rest_framework import serializers from rest_framework import serializers
from common.drf.serializers import BulkModelSerializer from common.drf.serializers import BulkModelSerializer
from common.drf.serializers import MethodSerializer from common.drf.serializers import MethodSerializer
from common.drf.fields import ObjectRelatedField
from jumpserver.utils import has_valid_xpack_license from jumpserver.utils import has_valid_xpack_license
from users.models import User
from ..models import LoginACL from ..models import LoginACL
from .rules import RuleSerializer from .rules import RuleSerializer
@ -12,8 +14,10 @@ common_help_text = _('Format for comma-delimited string, with * indicating a mat
class LoginACLSerializer(BulkModelSerializer): class LoginACLSerializer(BulkModelSerializer):
user_display = serializers.ReadOnlyField(source='user.username', label=_('Username')) user = ObjectRelatedField(queryset=User.objects, label=_('User'))
reviewers_display = serializers.SerializerMethodField(label=_('Reviewers')) reviewers = ObjectRelatedField(
queryset=User.objects, label=_('Reviewers'), many=True, required=False
)
action_display = serializers.ReadOnlyField(source='get_action_display', label=_('Action')) action_display = serializers.ReadOnlyField(source='get_action_display', label=_('Action'))
reviewers_amount = serializers.IntegerField(read_only=True, source='reviewers.count') reviewers_amount = serializers.IntegerField(read_only=True, source='reviewers.count')
rules = MethodSerializer() rules = MethodSerializer()
@ -22,13 +26,11 @@ class LoginACLSerializer(BulkModelSerializer):
model = LoginACL model = LoginACL
fields_mini = ['id', 'name'] fields_mini = ['id', 'name']
fields_small = fields_mini + [ fields_small = fields_mini + [
'priority', 'rules', 'action', 'action_display', 'priority', 'rules', 'action', 'action_display', 'is_active', 'user',
'is_active', 'user', 'user_display', 'date_created', 'date_updated', 'reviewers_amount', 'comment', 'created_by',
'date_created', 'date_updated', 'reviewers_amount',
'comment', 'created_by'
] ]
fields_fk = ['user', 'user_display'] fields_fk = ['user']
fields_m2m = ['reviewers', 'reviewers_display'] fields_m2m = ['reviewers']
fields = fields_small + fields_fk + fields_m2m fields = fields_small + fields_fk + fields_m2m
extra_kwargs = { extra_kwargs = {
'priority': {'default': 50}, 'priority': {'default': 50},