Skip to content

Commit 603e7f4

Browse files
authored
Permission issues in view_comments and can_bulk_archive_submissions (#4758)
The view_comments always returned True for any authenticated user due to minor bug.
1 parent 4c76627 commit 603e7f4

1 file changed

Lines changed: 23 additions & 21 deletions

File tree

hypha/apply/funds/permissions.py

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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:
145146
def 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

158160
def 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

165165
def 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

226226
def 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):
235235
def 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):
263264
def 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

287289
permissions_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

Comments
 (0)