mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-06-30 16:52:05 +00:00
feat(asset): api 添加推送系统用户到多个资产
This commit is contained in:
parent
dd979f582a
commit
4b67d6925e
@ -3,7 +3,8 @@ from django.shortcuts import get_object_or_404
|
|||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
from common.utils import get_logger
|
from common.utils import get_logger
|
||||||
from common.permissions import IsOrgAdmin, IsOrgAdminOrAppUser, IsAppUser
|
from common.permissions import IsOrgAdmin, IsOrgAdminOrAppUser
|
||||||
|
from common.drf.filters import CustomFilter
|
||||||
from orgs.mixins.api import OrgBulkModelViewSet
|
from orgs.mixins.api import OrgBulkModelViewSet
|
||||||
from orgs.mixins import generics
|
from orgs.mixins import generics
|
||||||
from orgs.utils import tmp_to_org
|
from orgs.utils import tmp_to_org
|
||||||
@ -12,7 +13,7 @@ from .. import serializers
|
|||||||
from ..serializers import SystemUserWithAuthInfoSerializer
|
from ..serializers import SystemUserWithAuthInfoSerializer
|
||||||
from ..tasks import (
|
from ..tasks import (
|
||||||
push_system_user_to_assets_manual, test_system_user_connectivity_manual,
|
push_system_user_to_assets_manual, test_system_user_connectivity_manual,
|
||||||
push_system_user_a_asset_manual,
|
push_system_user_to_assets
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -82,18 +83,18 @@ class SystemUserTaskApi(generics.CreateAPIView):
|
|||||||
permission_classes = (IsOrgAdmin,)
|
permission_classes = (IsOrgAdmin,)
|
||||||
serializer_class = serializers.SystemUserTaskSerializer
|
serializer_class = serializers.SystemUserTaskSerializer
|
||||||
|
|
||||||
def do_push(self, system_user, asset=None):
|
def do_push(self, system_user, assets_id=None):
|
||||||
if asset is None:
|
if assets_id is None:
|
||||||
task = push_system_user_to_assets_manual.delay(system_user)
|
task = push_system_user_to_assets_manual.delay(system_user)
|
||||||
else:
|
else:
|
||||||
username = self.request.query_params.get('username')
|
username = self.request.query_params.get('username')
|
||||||
task = push_system_user_a_asset_manual.delay(
|
task = push_system_user_to_assets.delay(
|
||||||
system_user, asset, username=username
|
system_user.id, assets_id, username=username
|
||||||
)
|
)
|
||||||
return task
|
return task
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def do_test(system_user, asset=None):
|
def do_test(system_user):
|
||||||
task = test_system_user_connectivity_manual.delay(system_user)
|
task = test_system_user_connectivity_manual.delay(system_user)
|
||||||
return task
|
return task
|
||||||
|
|
||||||
@ -104,11 +105,16 @@ class SystemUserTaskApi(generics.CreateAPIView):
|
|||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
action = serializer.validated_data["action"]
|
action = serializer.validated_data["action"]
|
||||||
asset = serializer.validated_data.get('asset')
|
asset = serializer.validated_data.get('asset')
|
||||||
|
assets = serializer.validated_data.get('assets') or []
|
||||||
|
|
||||||
system_user = self.get_object()
|
system_user = self.get_object()
|
||||||
if action == 'push':
|
if action == 'push':
|
||||||
task = self.do_push(system_user, asset)
|
assets = [asset] if asset else assets
|
||||||
|
assets_id = [asset.id for asset in assets]
|
||||||
|
assets_id = assets_id if assets_id else None
|
||||||
|
task = self.do_push(system_user, assets_id)
|
||||||
else:
|
else:
|
||||||
task = self.do_test(system_user, asset)
|
task = self.do_test(system_user)
|
||||||
data = getattr(serializer, '_data', {})
|
data = getattr(serializer, '_data', {})
|
||||||
data["task"] = task.id
|
data["task"] = task.id
|
||||||
setattr(serializer, '_data', data)
|
setattr(serializer, '_data', data)
|
||||||
|
@ -257,4 +257,8 @@ class SystemUserTaskSerializer(serializers.Serializer):
|
|||||||
asset = serializers.PrimaryKeyRelatedField(
|
asset = serializers.PrimaryKeyRelatedField(
|
||||||
queryset=Asset.objects, allow_null=True, required=False, write_only=True
|
queryset=Asset.objects, allow_null=True, required=False, write_only=True
|
||||||
)
|
)
|
||||||
|
assets = serializers.PrimaryKeyRelatedField(
|
||||||
|
queryset=Asset.objects, allow_null=True, required=False, write_only=True,
|
||||||
|
many=True
|
||||||
|
)
|
||||||
task = serializers.CharField(read_only=True)
|
task = serializers.CharField(read_only=True)
|
||||||
|
Loading…
Reference in New Issue
Block a user