Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 20 additions & 20 deletions hypha/apply/funds/permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,9 @@ def can_edit_submission(user, submission):
if submission.phase.permissions.can_edit(user):
co_applicant = submission.co_applicants.filter(user=user).first()
if co_applicant:
if co_applicant.role not in [CoApplicantRole.VIEW, CoApplicantRole.COMMENT]:
return (
True,
"Co-applicant with read/view only or comment access can't edit submission",
)
return False, ""
if co_applicant.role == CoApplicantRole.EDIT:
return True, "Co-applicant with edit role can edit submission"
return False, "Co-applicant does not have edit role"
return True, "User can edit in current phase"
return False, ""

Expand All @@ -55,10 +52,12 @@ def view_comments(role, user, submission) -> bool:
if role == StaffAdmin:
return True

if is_user_has_access_to_view_submission(user, submission):
submission_view, _ = can_view_submission(user, submission)
if submission_view:
return True

if submission.project and can_access_project(user, submission.project):
project = getattr(submission, "project", None)
if project and can_access_project(user, project):
return True

return False
Expand Down Expand Up @@ -145,6 +144,7 @@ def get_archive_alter_groups() -> list:
def can_alter_archived_submissions(user, submission=None) -> (bool, str):
"""
Return a boolean based on if a user can alter archived submissions
(submission is accepted for compatibility with permissions_map but not used)
"""
archive_access_groups = get_archive_alter_groups()

Expand All @@ -156,10 +156,8 @@ def can_alter_archived_submissions(user, submission=None) -> (bool, str):


def can_bulk_archive_submissions(user) -> bool:
if can_alter_archived_submissions(user) and can_bulk_delete_submissions(user):
return True

return False
can_alter, _ = can_alter_archived_submissions(user)
return can_alter and can_bulk_delete_submissions(user)


def can_change_external_reviewers(user, submission) -> bool:
Expand Down Expand Up @@ -202,7 +200,7 @@ def can_export_submissions(user) -> bool:
return False


def is_user_has_access_to_view_submission(user, submission):
def can_view_submission(user, submission):
if not user.is_authenticated:
return False, "Login Required"

Expand All @@ -227,7 +225,7 @@ def is_user_has_access_to_view_submission(user, submission):


def can_view_submission_screening(user, submission):
submission_view, _ = is_user_has_access_to_view_submission(user, submission)
submission_view, _ = can_view_submission(user, submission)
if not submission_view:
return False, "No access to view submission"
if submission.user == user:
Expand All @@ -238,13 +236,14 @@ def can_view_submission_screening(user, submission):
def can_invite_co_applicants(user, submission):
if submission.is_archive:
return False, "Co-applicant can't be added to archived submission"
if hasattr(submission, "project"):
project = getattr(submission, "project", None)
if project:
from hypha.apply.projects.models.project import COMPLETE

if submission.project.status == COMPLETE:
if project.status == COMPLETE:
return False, "Co-applicants can't be invited to completed projects"
if (
submission.co_applicant_invites.all().count()
submission.co_applicant_invites.count()
>= settings.SUBMISSIONS_COAPPLICANT_INVITES_LIMIT
):
return False, "Limit reached for this submission"
Expand All @@ -266,10 +265,11 @@ def can_view_co_applicants(user, submission):
def can_update_co_applicant(user, invite):
if invite.submission.is_archive:
return False, "Co-applicant can't be updated to archived submission"
if hasattr(invite.submission, "project"):
project = getattr(invite.submission, "project", None)
if project:
from hypha.apply.projects.models.project import COMPLETE

if invite.submission.project.status == COMPLETE:
if project.status == COMPLETE:
return False, "Co-applicants can't be updated to completed projects"
if invite.invited_by == user:
return True, "Same user who invited can delete the co-applicant"
Expand All @@ -288,7 +288,7 @@ def user_can_view_post_comment_form(user, submission):


permissions_map = {
"submission_view": is_user_has_access_to_view_submission,
"submission_view": can_view_submission,
"submission_edit": can_edit_submission,
"submission_action": can_take_submission_actions,
"can_view_submission_screening": can_view_submission_screening,
Expand Down
Loading