@@ -616,7 +616,7 @@ def resource_service_permissions(self, request, pk, *args, **kwargs):
616616 action = "permissions" ,
617617 input_params = {"uuid" : request_params .get ("uuid" , resource .uuid )},
618618 )
619- elif request .method == "PUT" :
619+ elif request .method in [ "PUT" , "PATCH" ] :
620620 user_perms = permissions_registry .get_perms (instance = resource , user = request .user )
621621 if request .data .get ("groups" ):
622622 excluded_ids = []
@@ -630,33 +630,6 @@ def resource_service_permissions(self, request, pk, *args, **kwargs):
630630 request .data ["groups" ] = [g for g in request .data ["groups" ] if g .get ("id" ) not in excluded_ids ]
631631 perms_spec_compact_resource = patch_perms (request .data , perms_spec .compact , resource )
632632
633- if resource .dirty_state :
634- raise Exception ("Cannot update if the resource is in dirty state" )
635- resource .set_dirty_state ()
636- _exec_request = ExecutionRequest .objects .create (
637- user = request .user ,
638- func_name = "set_permissions" ,
639- geonode_resource = resource ,
640- action = "permissions" ,
641- input_params = {
642- "uuid" : request_params .get ("uuid" , resource .uuid ),
643- "permissions" : perms_spec_compact_resource .extended ,
644- "created" : request_params .get ("created" , False ),
645- },
646- )
647- elif request .method == "PATCH" :
648- user_perms = permissions_registry .get_perms (instance = resource , user = request .user )
649- if request .data .get ("groups" ):
650- excluded_ids = []
651- if "can_manage_anonymous_permissions" not in user_perms :
652- anonymous_group = Group .objects .get (name = "anonymous" )
653- excluded_ids .append (anonymous_group .id )
654- if "can_manage_registered_member_permissions" not in user_perms :
655- registered_group = Group .objects .get (name = groups_settings .REGISTERED_MEMBERS_GROUP_NAME )
656- excluded_ids .append (registered_group .id )
657- if excluded_ids :
658- request .data ["groups" ] = [g for g in request .data ["groups" ] if g .get ("id" ) not in excluded_ids ]
659- perms_spec_compact_resource = patch_perms (request .data , perms_spec .compact , resource )
660633 if resource .dirty_state :
661634 raise Exception ("Cannot update if the resource is in dirty state" )
662635 resource .set_dirty_state ()
0 commit comments