perf: 修改 command filter

pull/9150/head
ibuler 2022-12-02 11:53:07 +08:00
parent 19c3f98e8f
commit a6aafaec05
7 changed files with 35 additions and 31 deletions

View File

@ -1,3 +1,4 @@
from .command_acl import *
from .login_acl import *
from .login_asset_acl import *
from .login_asset_check import *

View File

@ -1,12 +1,18 @@
from orgs.mixins.api import OrgBulkModelViewSet
from .. import models, serializers
__all__ = ['CommandFilterACLViewSet']
class CommandGroupViewSet(OrgBulkModelViewSet):
model = models.CommandGroup
filterset_fields = ('name',)
search_fields = filterset_fields
serializer_class = serializers.CommandGroupSerializer
class CommandFilterACLViewSet(OrgBulkModelViewSet):
model = models.CommandFilterACL
filterset_fields = ('name', )
filterset_fields = ('name',)
search_fields = filterset_fields
serializer_class = serializers.LoginAssetACLSerializer

View File

@ -1,3 +1,4 @@
from .command_filter import *
from .login_acl import *
from .login_asset_acl import *
from .login_asset_check import *

View File

@ -3,14 +3,20 @@ from django.utils.translation import ugettext_lazy as _
from acls.models import CommandGroup, CommandFilterACL
from common.drf.fields import ObjectRelatedField
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
from .base import BaseUserAssetAccountACLSerializerMixin
from .base import BaseUserAssetAccountACLSerializerMixin as BaseSerializer
__all__ = ["CommandFilterACLSerializer"]
__all__ = ["CommandFilterACLSerializer", "CommandGroupSerializer"]
class CommandFilterACLSerializer(BaseUserAssetAccountACLSerializerMixin, BulkOrgResourceModelSerializer):
class CommandGroupSerializer(BulkOrgResourceModelSerializer):
class Meta:
model = CommandGroup
fields = ['id', 'name', 'type', 'content', 'comment']
class CommandFilterACLSerializer(BaseSerializer, BulkOrgResourceModelSerializer):
commands = ObjectRelatedField(queryset=CommandGroup.objects, many=True, required=False, label=_('Commands'))
class Meta(BaseUserAssetAccountACLSerializerMixin.Meta):
class Meta(BaseSerializer.Meta):
model = CommandFilterACL
fields = BaseUserAssetAccountACLSerializerMixin.Meta.fields + ['commands']
fields = BaseSerializer.Meta.fields + ['commands']

View File

@ -1,12 +1,12 @@
from django.utils.translation import ugettext as _
from rest_framework import serializers
from common.drf.serializers import BulkModelSerializer
from common.drf.serializers import MethodSerializer
from common.drf.fields import ObjectRelatedField
from common.drf.fields import ObjectRelatedField, LabeledChoiceField
from common.drf.serializers import BulkModelSerializer, MethodSerializer
from jumpserver.utils import has_valid_xpack_license
from users.models import User
from ..models import LoginACL
from .rules import RuleSerializer
from ..models import LoginACL
__all__ = [
"LoginACLSerializer",
@ -22,9 +22,7 @@ class LoginACLSerializer(BulkModelSerializer):
reviewers = ObjectRelatedField(
queryset=User.objects, label=_("Reviewers"), many=True, required=False
)
action_display = serializers.ReadOnlyField(
source="get_action_display", label=_("Action")
)
action = LabeledChoiceField(choices=LoginACL.ActionChoices.choices)
reviewers_amount = serializers.IntegerField(
read_only=True, source="reviewers.count"
)
@ -34,17 +32,9 @@ class LoginACLSerializer(BulkModelSerializer):
model = LoginACL
fields_mini = ["id", "name"]
fields_small = fields_mini + [
"priority",
"rules",
"action",
"action_display",
"is_active",
"user",
"date_created",
"date_updated",
"reviewers_amount",
"comment",
"created_by",
"priority", "user", "rules", "action",
"is_active", "date_created", "date_updated",
"reviewers_amount", "comment", "created_by",
]
fields_fk = ["user"]
fields_m2m = ["reviewers"]
@ -65,7 +55,7 @@ class LoginACLSerializer(BulkModelSerializer):
return
choices = action._choices
if not has_valid_xpack_license():
choices.pop(LoginACL.ActionChoices.confirm, None)
choices.pop(LoginACL.ActionChoices.review, None)
action._choices = choices
def get_rules_serializer(self):

View File

@ -1,11 +1,11 @@
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
from .base import BaseUserAssetAccountACLSerializerMixin
from .base import BaseUserAssetAccountACLSerializerMixin as BaseSerializer
from ..models import LoginAssetACL
__all__ = ["LoginAssetACLSerializer"]
class LoginAssetACLSerializer(BaseUserAssetAccountACLSerializerMixin, BulkOrgResourceModelSerializer):
class Meta(BaseUserAssetAccountACLSerializerMixin.Meta):
class LoginAssetACLSerializer(BaseSerializer, BulkOrgResourceModelSerializer):
class Meta(BaseSerializer.Meta):
model = LoginAssetACL

View File

@ -1,14 +1,14 @@
from django.urls import path
from rest_framework_bulk.routes import BulkRouter
from .. import api
app_name = 'acls'
router = BulkRouter()
router.register(r'login-acls', api.LoginACLViewSet, 'login-acl')
router.register(r'login-asset-acls', api.LoginAssetACLViewSet, 'login-asset-acl')
router.register(r'command-filter-acls', api.CommandFilterACLViewSet, 'command-filter-acl')
urlpatterns = [
path('login-asset/check/', api.LoginAssetCheckAPI.as_view(), name='login-asset-check'),