Skip to content

Commit ddf32f2

Browse files
committed
Remove duplicate code
1 parent 9e6f8fd commit ddf32f2

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

api/actions/permissions.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,23 +48,17 @@ def has_object_permission(self, request, view, obj):
4848
is_node_admin = target is not None and target.has_permission(auth.user, osf_permissions.ADMIN)
4949
is_write_contributor = target is not None and target.has_permission(auth.user, osf_permissions.WRITE)
5050

51-
provisional_write_allowed = False
52-
if is_write_contributor:
53-
try:
54-
serializer = view.get_serializer(data=request.data)
55-
serializer.is_valid(raise_exception=True)
56-
trigger = serializer.validated_data.get('trigger')
57-
provisional_write_allowed = trigger == ReviewTriggers.SUBMIT.value
58-
except Exception:
59-
provisional_write_allowed = False
51+
# Validate serializer once and extract trigger
52+
serializer = view.get_serializer(data=request.data)
53+
serializer.is_valid(raise_exception=True)
54+
trigger = serializer.validated_data.get('trigger')
55+
56+
provisional_write_allowed = is_write_contributor and trigger == ReviewTriggers.SUBMIT.value
6057

6158
if not (is_node_admin or auth.user.has_perm('view_submissions', provider) or provisional_write_allowed):
6259
return False
6360

6461
# User can trigger state changes on this reviewable, but can they use this trigger in particular?
65-
serializer = view.get_serializer(data=request.data)
66-
serializer.is_valid(raise_exception=True)
67-
trigger = serializer.validated_data.get('trigger')
6862
permission = TRIGGER_PERMISSIONS[trigger]
6963
if permission is None and is_write_contributor and trigger == ReviewTriggers.SUBMIT.value:
7064
return True

0 commit comments

Comments
 (0)