Add clarification to problem list page
This commit is contained in:
parent
425354a2de
commit
c973250814
5 changed files with 56 additions and 27 deletions
|
@ -57,7 +57,8 @@ class PostList(ListView):
|
|||
clarifications = ProblemClarification.objects.filter(problem__in=participation.contest.problems.all())
|
||||
context['has_clarifications'] = clarifications.count() > 0
|
||||
context['clarifications'] = clarifications.order_by('-date')
|
||||
|
||||
if participation.contest.is_editable_by(self.request.user):
|
||||
context['can_edit_contest'] = True
|
||||
context['user_count'] = lazy(Profile.objects.count, int, int)
|
||||
context['problem_count'] = lazy(Problem.objects.filter(is_public=True).count, int, int)
|
||||
context['submission_count'] = lazy(Submission.objects.count, int, int)
|
||||
|
@ -105,11 +106,6 @@ class PostList(ListView):
|
|||
else:
|
||||
context['open_tickets'] = []
|
||||
|
||||
if self.request.in_contest:
|
||||
if self.request.user.is_superuser or \
|
||||
self.request.profile in self.request.participation.contest.authors.all() or \
|
||||
self.request.profile in self.request.participation.contest.curators.all():
|
||||
context['can_edit_contest'] = True
|
||||
return context
|
||||
|
||||
|
||||
|
|
|
@ -919,22 +919,9 @@ class NewContestClarificationView(ContestMixin, TitleMixin, SingleObjectFormView
|
|||
|
||||
|
||||
class ContestClarificationAjax(ContestMixin, DetailView):
|
||||
template_name = 'contest/clarification-ajax.html'\
|
||||
|
||||
def is_accessible(self):
|
||||
if not self.request.user.is_authenticated:
|
||||
return False
|
||||
if not self.request.in_contest:
|
||||
return False
|
||||
if not self.request.participation.contest == self.object:
|
||||
return False
|
||||
return self.request.user.is_superuser or \
|
||||
self.request.profile in self.request.participation.contest.authors.all() or \
|
||||
self.request.profile in self.request.participation.contest.curators.all()
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.object = self.get_object()
|
||||
if not self.is_accessible():
|
||||
if not self.object.is_accessible_by(request.user):
|
||||
raise Http404()
|
||||
|
||||
polling_time = 1 # minute
|
||||
|
|
|
@ -27,8 +27,8 @@ from django.views.generic.detail import SingleObjectMixin
|
|||
|
||||
from judge.comments import CommentedDetailView
|
||||
from judge.forms import ProblemCloneForm, ProblemSubmitForm
|
||||
from judge.models import ContestProblem, ContestSubmission, Judge, Language, Problem, ProblemGroup, \
|
||||
ProblemTranslation, ProblemType, RuntimeVersion, Solution, Submission, SubmissionSource, \
|
||||
from judge.models import ContestProblem, ContestSubmission, Judge, Language, Problem, ProblemClarification, \
|
||||
ProblemGroup, ProblemTranslation, ProblemType, RuntimeVersion, Solution, Submission, SubmissionSource, \
|
||||
TranslatedProblemForeignKeyQuerySet, Organization
|
||||
from judge.pdf_problems import DefaultPdfMaker, HAS_PDF
|
||||
from judge.utils.diggpaginator import DiggPaginator
|
||||
|
@ -439,6 +439,15 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView
|
|||
context['point_start'], context['point_end'], context['point_values'] = 0, 0, {}
|
||||
context['hide_contest_scoreboard'] = self.contest.scoreboard_visibility in \
|
||||
(self.contest.SCOREBOARD_AFTER_CONTEST, self.contest.SCOREBOARD_AFTER_PARTICIPATION)
|
||||
context['has_clarifications'] = False
|
||||
if self.request.user.is_authenticated:
|
||||
participation = self.request.profile.current_contest
|
||||
if participation:
|
||||
clarifications = ProblemClarification.objects.filter(problem__in=participation.contest.problems.all())
|
||||
context['has_clarifications'] = clarifications.count() > 0
|
||||
context['clarifications'] = clarifications.order_by('-date')
|
||||
if participation.contest.is_editable_by(self.request.user):
|
||||
context['can_edit_contest'] = True
|
||||
return context
|
||||
|
||||
def get_noui_slider_points(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue