feat(asset): api 添加推送系统用户到多个资产

This commit is contained in:
xinwen 2020-12-08 17:29:22 +08:00 committed by Jiangjie.Bai
parent dd979f582a
commit 4b67d6925e
2 changed files with 19 additions and 9 deletions

View File

@ -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)

View File

@ -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)