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
}
rbac_perms = {
"sync_accounts": "assets.add_gatheredaccount",
"status": "assets.change_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):
instance = self.get_object()
instance.status = request.data.get("status")
instance.save(update_fields=["status"])
if instance.status == "confirmed":
GatheredAccount.sync_accounts([instance])
ids = request.data.get('ids', [])
new_status = request.data.get("status")
updated_instances = GatheredAccount.objects.filter(id__in=ids)
updated_instances.update(status=new_status)
if new_status == "confirmed":
GatheredAccount.sync_accounts(updated_instances)
return Response(status=status.HTTP_200_OK)