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