@@ -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