mirror of https://github.com/jumpserver/jumpserver
perf: Update status action to handle multiple accounts
parent
458243abe5
commit
8f8935ddd8
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue