@@ -38,12 +38,9 @@ def can_edit_submission(user, submission):
3838 if submission .phase .permissions .can_edit (user ):
3939 co_applicant = submission .co_applicants .filter (user = user ).first ()
4040 if co_applicant :
41- if co_applicant .role not in [CoApplicantRole .VIEW , CoApplicantRole .COMMENT ]:
42- return (
43- True ,
44- "Co-applicant with read/view only or comment access can't edit submission" ,
45- )
46- return False , ""
41+ if co_applicant .role == CoApplicantRole .EDIT :
42+ return True , "Co-applicant with edit role can edit submission"
43+ return False , "Co-applicant does not have edit role"
4744 return True , "User can edit in current phase"
4845 return False , ""
4946
@@ -55,11 +52,15 @@ def view_comments(role, user, submission) -> bool:
5552 if role == StaffAdmin :
5653 return True
5754
58- if is_user_has_access_to_view_submission (user , submission ):
55+ submission_view , _ = can_view_submission (user , submission )
56+ if submission_view :
5957 return True
6058
61- if submission .project and can_access_project (user , submission .project ):
62- return True
59+ project = getattr (submission , "project" , None )
60+ if project :
61+ can_access , _ = can_access_project (user , project )
62+ if can_access :
63+ return True
6364
6465 return False
6566
@@ -145,6 +146,7 @@ def get_archive_alter_groups() -> list:
145146def can_alter_archived_submissions (user , submission = None ) -> (bool , str ):
146147 """
147148 Return a boolean based on if a user can alter archived submissions
149+ (submission is accepted for compatibility with permissions_map but not used)
148150 """
149151 archive_access_groups = get_archive_alter_groups ()
150152
@@ -156,10 +158,8 @@ def can_alter_archived_submissions(user, submission=None) -> (bool, str):
156158
157159
158160def can_bulk_archive_submissions (user ) -> bool :
159- if can_alter_archived_submissions (user ) and can_bulk_delete_submissions (user ):
160- return True
161-
162- return False
161+ can_alter , _ = can_alter_archived_submissions (user )
162+ return can_alter and can_bulk_delete_submissions (user )
163163
164164
165165def can_change_external_reviewers (user , submission ) -> bool :
@@ -202,7 +202,7 @@ def can_export_submissions(user) -> bool:
202202 return False
203203
204204
205- def is_user_has_access_to_view_submission (user , submission ):
205+ def can_view_submission (user , submission ):
206206 if not user .is_authenticated :
207207 return False , "Login Required"
208208
@@ -224,7 +224,7 @@ def is_user_has_access_to_view_submission(user, submission):
224224
225225
226226def can_view_submission_screening (user , submission ):
227- submission_view , _ = is_user_has_access_to_view_submission (user , submission )
227+ submission_view , _ = can_view_submission (user , submission )
228228 if not submission_view :
229229 return False , "No access to view submission"
230230 if submission .user == user :
@@ -235,13 +235,14 @@ def can_view_submission_screening(user, submission):
235235def can_invite_co_applicants (user , submission ):
236236 if submission .is_archive :
237237 return False , "Co-applicant can't be added to archived submission"
238- if hasattr (submission , "project" ):
238+ project = getattr (submission , "project" , None )
239+ if project :
239240 from hypha .apply .projects .models .project import COMPLETE
240241
241- if submission . project .status == COMPLETE :
242+ if project .status == COMPLETE :
242243 return False , "Co-applicants can't be invited to completed projects"
243244 if (
244- submission .co_applicant_invites .all (). count ()
245+ submission .co_applicant_invites .count ()
245246 >= settings .SUBMISSIONS_COAPPLICANT_INVITES_LIMIT
246247 ):
247248 return False , "Limit reached for this submission"
@@ -263,10 +264,11 @@ def can_view_co_applicants(user, submission):
263264def can_update_co_applicant (user , invite ):
264265 if invite .submission .is_archive :
265266 return False , "Co-applicant can't be updated to archived submission"
266- if hasattr (invite .submission , "project" ):
267+ project = getattr (invite .submission , "project" , None )
268+ if project :
267269 from hypha .apply .projects .models .project import COMPLETE
268270
269- if invite . submission . project .status == COMPLETE :
271+ if project .status == COMPLETE :
270272 return False , "Co-applicants can't be updated to completed projects"
271273 if invite .invited_by == user :
272274 return True , "Same user who invited can delete the co-applicant"
@@ -285,7 +287,7 @@ def user_can_view_post_comment_form(user, submission):
285287
286288
287289permissions_map = {
288- "submission_view" : is_user_has_access_to_view_submission ,
290+ "submission_view" : can_view_submission ,
289291 "submission_edit" : can_edit_submission ,
290292 "submission_action" : can_take_submission_actions ,
291293 "can_view_submission_screening" : can_view_submission_screening ,
0 commit comments