perf: Delete gather_account

pull/14722/head
wangruidong 2024-12-20 18:13:23 +08:00 committed by w940853815
parent 71abe93fa5
commit a0b7c115ae
1 changed files with 17 additions and 6 deletions

View File

@ -9,9 +9,10 @@ from rest_framework.response import Response
from accounts import serializers from accounts import serializers
from accounts.const import AutomationTypes from accounts.const import AutomationTypes
from accounts.filters import GatheredAccountFilterSet from accounts.filters import GatheredAccountFilterSet
from accounts.models import GatherAccountsAutomation, AutomationExecution from accounts.models import GatherAccountsAutomation, AutomationExecution, Account
from accounts.models import GatheredAccount from accounts.models import GatheredAccount
from assets.models import Asset from assets.models import Asset
from common.utils.http import is_true
from orgs.mixins.api import OrgBulkModelViewSet from orgs.mixins.api import OrgBulkModelViewSet
from .base import AutomationExecutionViewSet from .base import AutomationExecutionViewSet
@ -96,14 +97,24 @@ class GatheredAccountViewSet(OrgBulkModelViewSet):
return Response(status=status.HTTP_200_OK) return Response(status=status.HTTP_200_OK)
@action(methods=["post"], detail=False, url_path="delete-remote") def perform_destroy(self, instance):
def delete_remote(self, request, *args, **kwargs): request = self.request
asset_id = request.data.get("asset_id") params = request.query_params
username = request.data.get("username") is_delete_remote = params.get("is_delete_remote")
is_delete_account = params.get("is_delete_account")
asset_id = params.get("asset")
username = params.get("username")
if is_true(is_delete_remote):
self._delete_remote(asset_id, username)
if is_true(is_delete_account):
account = get_object_or_404(Account, username=username, asset_id=asset_id)
account.delete()
super().perform_destroy(instance)
def _delete_remote(self, asset_id, username):
asset = get_object_or_404(Asset, pk=asset_id) asset = get_object_or_404(Asset, pk=asset_id)
handler = RiskHandler(asset, username, request=self.request) handler = RiskHandler(asset, username, request=self.request)
handler.handle_delete_remote() handler.handle_delete_remote()
return Response(status=status.HTTP_200_OK)
@action(methods=["get"], detail=True, url_path="details") @action(methods=["get"], detail=True, url_path="details")
def details(self, request, *args, **kwargs): def details(self, request, *args, **kwargs):