Browse Source

perf: 开源 acl去除 review

pull/10328/head
feng 2 years ago committed by Jiangjie.Bai
parent
commit
149ca1afce
  1. 25
      apps/acls/serializers/base.py
  2. 21
      apps/acls/serializers/login_acl.py

25
apps/acls/serializers/base.py

@ -3,6 +3,7 @@ from rest_framework import serializers
from acls.models.base import ActionChoices from acls.models.base import ActionChoices
from common.serializers.fields import LabeledChoiceField, ObjectRelatedField from common.serializers.fields import LabeledChoiceField, ObjectRelatedField
from jumpserver.utils import has_valid_xpack_license
from orgs.models import Organization from orgs.models import Organization
from users.models import User from users.models import User
@ -51,7 +52,26 @@ class ACLAccountsSerializer(serializers.Serializer):
) )
class BaseUserAssetAccountACLSerializerMixin(serializers.Serializer): class ActionAclSerializer(serializers.Serializer):
action = LabeledChoiceField(
choices=ActionChoices.choices, default=ActionChoices.reject, label=_("Action")
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.set_action_choices()
def set_action_choices(self):
action = self.fields.get("action")
if not action:
return
choices = action.choices
if not has_valid_xpack_license():
choices.pop(ActionChoices.review, None)
action._choices = choices
class BaseUserAssetAccountACLSerializerMixin(ActionAclSerializer, serializers.Serializer):
users = ACLUsersSerializer(label=_('User')) users = ACLUsersSerializer(label=_('User'))
assets = ACLAssestsSerializer(label=_('Asset')) assets = ACLAssestsSerializer(label=_('Asset'))
accounts = ACLAccountsSerializer(label=_('Account')) accounts = ACLAccountsSerializer(label=_('Account'))
@ -77,9 +97,6 @@ class BaseUserAssetAccountACLSerializerMixin(serializers.Serializer):
reviewers_amount = serializers.IntegerField( reviewers_amount = serializers.IntegerField(
read_only=True, source="reviewers.count", label=_('Reviewers amount') read_only=True, source="reviewers.count", label=_('Reviewers amount')
) )
action = LabeledChoiceField(
choices=ActionChoices.choices, default=ActionChoices.reject, label=_("Action")
)
class Meta: class Meta:
fields_mini = ["id", "name"] fields_mini = ["id", "name"]

21
apps/acls/serializers/login_acl.py

@ -2,12 +2,11 @@ from django.utils.translation import ugettext as _
from rest_framework import serializers from rest_framework import serializers
from common.serializers import BulkModelSerializer, MethodSerializer from common.serializers import BulkModelSerializer, MethodSerializer
from common.serializers.fields import ObjectRelatedField, LabeledChoiceField from common.serializers.fields import ObjectRelatedField
from jumpserver.utils import has_valid_xpack_license
from users.models import User from users.models import User
from .base import ActionAclSerializer
from .rules import RuleSerializer from .rules import RuleSerializer
from ..models import LoginACL from ..models import LoginACL
from ..models.base import ActionChoices
__all__ = [ __all__ = [
"LoginACLSerializer", "LoginACLSerializer",
@ -18,12 +17,11 @@ common_help_text = _(
) )
class LoginACLSerializer(BulkModelSerializer): class LoginACLSerializer(ActionAclSerializer, BulkModelSerializer):
user = ObjectRelatedField(queryset=User.objects, label=_("User")) user = ObjectRelatedField(queryset=User.objects, label=_("User"))
reviewers = ObjectRelatedField( reviewers = ObjectRelatedField(
queryset=User.objects, label=_("Reviewers"), many=True, required=False queryset=User.objects, label=_("Reviewers"), many=True, required=False
) )
action = LabeledChoiceField(choices=ActionChoices.choices, label=_('Action'))
reviewers_amount = serializers.IntegerField( reviewers_amount = serializers.IntegerField(
read_only=True, source="reviewers.count", label=_("Reviewers amount") read_only=True, source="reviewers.count", label=_("Reviewers amount")
) )
@ -45,18 +43,5 @@ class LoginACLSerializer(BulkModelSerializer):
"is_active": {"default": True}, "is_active": {"default": True},
} }
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.set_action_choices()
def set_action_choices(self):
action = self.fields.get("action")
if not action:
return
choices = action.choices
if not has_valid_xpack_license():
choices.pop(LoginACL.ActionChoices.review, None)
action._choices = choices
def get_rules_serializer(self): def get_rules_serializer(self):
return RuleSerializer() return RuleSerializer()

Loading…
Cancel
Save