Skip to content

Commit 0922330

Browse files
[Fixes #12996] Allow changing ownership of a single resource
1 parent fa4ebbc commit 0922330

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

geonode/people/api/views.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,9 @@ def remove_from_group_manager(self, request, pk=None):
148148
def transfer_resources(self, request, pk=None):
149149
user = self.get_object()
150150
admin = get_user_model().objects.filter(is_superuser=True, is_staff=True).first()
151-
target_user = request.data.get("owner") # 1002
152-
transfer_resource_subset = request.POST.getlist("resources", None)
151+
target_user = request.data.get("newOwner") # the new owner
152+
previous_owner = request.data.get("currentOwner") # the previous owner, usually it match the user
153+
transfer_resource_subset = request.data.get("resources", None)
153154
target = None
154155
if target_user == "DEFAULT":
155156
if not admin:
@@ -161,25 +162,19 @@ def transfer_resources(self, request, pk=None):
161162
if target == user:
162163
return Response("Cannot reassign to self", status=400)
163164

164-
filter_payload = {}
165+
# we need to filter by the previous owner id
166+
filter_payload = dict(owner=previous_owner or user)
165167

166168
if transfer_resource_subset:
167169
# transfer_resources
168170
filter_payload["pk__in"] = transfer_resource_subset
169171

170-
if not user.is_superuser:
171-
"""
172-
if the request user is not admin, we will filter for the resources
173-
thats owns
174-
"""
175-
filter_payload["owner"] = user
176-
177172
for instance in ResourceBase.objects.filter(**filter_payload).iterator():
178173
"""
179174
We should reassing all the permissions to the new resource owner
180175
we can use the resource manager because inside it will automatically update
181176
the owner
182177
"""
183-
resource_manager.set_permissions(instance.uuid, instance, owner=target or user)
178+
resource_manager.set_permissions(instance.uuid, instance, owner=target or user, permissions=None)
184179

185180
return Response("Resources transfered successfully", status=200)

0 commit comments

Comments
 (0)