From 509327b045d8ba13c3152bdb50232672b0c33f42 Mon Sep 17 00:00:00 2001 From: cuom1999 Date: Thu, 17 Jun 2021 01:49:09 -0500 Subject: [PATCH] Add more detailed permission for testcases view --- judge/views/submission.py | 22 +++++++++++++++++++--- templates/submission/status-testcases.html | 4 ++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/judge/views/submission.py b/judge/views/submission.py index 06654c0..e4fcc2a 100644 --- a/judge/views/submission.py +++ b/judge/views/submission.py @@ -167,20 +167,36 @@ def get_cases_data(submission): class SubmissionStatus(SubmissionDetailBase): template_name = 'submission/status.html' + def access_testcases_in_contest(self): + contest = self.object.contest_or_none + if contest is None: + return False + if contest.problem.problem.is_editable_by(self.request.user): + return True + if contest.problem.contest.is_in_contest(self.request.user): + return False + if contest.participation.ended: + return True + return False + def get_context_data(self, **kwargs): context = super(SubmissionStatus, self).get_context_data(**kwargs) submission = self.object context['last_msg'] = event.last() context['batches'] = group_test_cases(submission.test_cases.all()) context['time_limit'] = submission.problem.time_limit - + context['can_see_testcases'] = False + contest = submission.contest_or_none prefix_length = 0 + can_see_testcases = self.access_testcases_in_contest() + if (contest is not None): prefix_length = contest.problem.output_prefix_override - if ((contest is None or prefix_length > 0) or self.request.user.is_superuser): + + if contest is None or prefix_length > 0 or can_see_testcases: context['cases_data'] = get_cases_data(submission) - + context['can_see_testcases'] = True try: lang_limit = submission.problem.language_limits.get( language=submission.language) diff --git a/templates/submission/status-testcases.html b/templates/submission/status-testcases.html index 01462da..77c4f09 100644 --- a/templates/submission/status-testcases.html +++ b/templates/submission/status-testcases.html @@ -92,7 +92,7 @@ {% for case in batch.cases %} - {%- if ((prefix_length is none or prefix_length > 0) or (request.user.is_superuser)) -%} + {%- if can_see_testcases -%} {%- endif -%} {%- if batch.id -%} @@ -132,7 +132,7 @@ {% if case.status != 'SC' %}{{_('Memory')}}: {{ case.memory|kbdetailformat }}{% endif %} - {% if ((prefix_length is none or prefix_length > 0) or (request.user.is_superuser)) %} + {% if can_see_testcases %}