36 lines
986 B
Python
36 lines
986 B
Python
from . import registry
|
|
|
|
|
|
@registry.function
|
|
def submission_layout(
|
|
submission, profile_id, user, editable_problem_ids, completed_problem_ids
|
|
):
|
|
problem_id = submission.problem_id
|
|
can_view = False
|
|
|
|
if problem_id in editable_problem_ids:
|
|
can_view = True
|
|
|
|
if profile_id == submission.user_id:
|
|
can_view = True
|
|
|
|
if user.has_perm("judge.change_submission"):
|
|
can_view = True
|
|
|
|
if user.has_perm("judge.view_all_submission"):
|
|
can_view = True
|
|
|
|
if submission.problem.is_public and user.has_perm("judge.view_public_submission"):
|
|
can_view = True
|
|
|
|
if submission.problem_id in completed_problem_ids:
|
|
can_view |= (
|
|
submission.problem.is_public or profile_id in submission.problem.tester_ids
|
|
)
|
|
|
|
if not can_view and hasattr(submission, "contest"):
|
|
contest = submission.contest.participation.contest
|
|
if contest.is_editable_by(user):
|
|
can_view = True
|
|
|
|
return can_view
|