perf: Update status action to handle multiple accounts

pull/14726/head
wangruidong 2024-12-24 18:31:41 +08:00 committed by w940853815
parent 458243abe5
commit 8f8935ddd8
1 changed files with 7 additions and 8 deletions

View File

@ -81,19 +81,18 @@ class GatheredAccountViewSet(OrgBulkModelViewSet):
"details": serializers.GatheredAccountDetailsSerializer "details": serializers.GatheredAccountDetailsSerializer
} }
rbac_perms = { rbac_perms = {
"sync_accounts": "assets.add_gatheredaccount",
"status": "assets.change_gatheredaccount", "status": "assets.change_gatheredaccount",
"details": "assets.view_gatheredaccount" "details": "assets.view_gatheredaccount"
} }
@action(methods=["put"], detail=True, url_path="status") @action(methods=["put"], detail=False, url_path="status")
def status(self, request, *args, **kwargs): def status(self, request, *args, **kwargs):
instance = self.get_object() ids = request.data.get('ids', [])
instance.status = request.data.get("status") new_status = request.data.get("status")
instance.save(update_fields=["status"]) updated_instances = GatheredAccount.objects.filter(id__in=ids)
updated_instances.update(status=new_status)
if instance.status == "confirmed": if new_status == "confirmed":
GatheredAccount.sync_accounts([instance]) GatheredAccount.sync_accounts(updated_instances)
return Response(status=status.HTTP_200_OK) return Response(status=status.HTTP_200_OK)