Skip to content

Commit 22c28fb

Browse files
fixed affiliation update for write contributors in registrations
1 parent 8745da4 commit 22c28fb

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

api/nodes/permissions.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,22 @@ def has_object_permission(self, request, view, obj):
128128
return obj.has_permission(auth.user, osf_permissions.WRITE)
129129

130130

131+
class AdminOrWriteContributor(permissions.BasePermission):
132+
acceptable_models = (AbstractNode, OSFUser, Institution, BaseAddonSettings, DraftRegistration)
133+
134+
def has_object_permission(self, request, view, obj):
135+
if isinstance(obj, dict) and 'self' in obj:
136+
obj = obj['self']
137+
138+
assert_resource_type(obj, self.acceptable_models)
139+
auth = get_user_auth(request)
140+
141+
if request.method in permissions.SAFE_METHODS:
142+
return obj.is_public or obj.can_view(auth)
143+
144+
return obj.has_permission(auth.user, osf_permissions.ADMIN) or obj.has_permission(auth.user, osf_permissions.WRITE)
145+
146+
131147
class AdminOrPublic(permissions.BasePermission):
132148

133149
acceptable_models = (AbstractNode, OSFUser, Institution, BaseAddonSettings, DraftRegistration)
@@ -142,6 +158,7 @@ def has_object_permission(self, request, view, obj):
142158
if request.method in permissions.SAFE_METHODS:
143159
return obj.is_public or obj.can_view(auth)
144160
else:
161+
145162
return obj.has_permission(auth.user, osf_permissions.ADMIN)
146163

147164
class AdminContributorOrPublic(permissions.BasePermission):

api/registrations/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
AdminOrPublic,
6060
ExcludeWithdrawals,
6161
NodeLinksShowIfVersion,
62+
AdminOrWriteContributor,
6263
)
6364
from api.registrations.permissions import ContributorOrModerator, ContributorOrModeratorOrPublic
6465
from api.registrations.serializers import (
@@ -682,7 +683,7 @@ class RegistrationInstitutionsRelationship(NodeInstitutionsRelationship, Registr
682683
permission_classes = (
683684
drf_permissions.IsAuthenticatedOrReadOnly,
684685
base_permissions.TokenHasScope,
685-
AdminOrPublic,
686+
AdminOrWriteContributor,
686687
)
687688

688689

0 commit comments

Comments
 (0)