mirror of https://github.com/jumpserver/jumpserver
perf: 开源 acl去除 review
parent
802d6136d6
commit
ff6a8fa4d7
|
@ -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"]
|
||||||
|
|
|
@ -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…
Reference in New Issue