Add contest field to manage submission page
This commit is contained in:
parent
038aa8674a
commit
e1054077fa
6 changed files with 96 additions and 70 deletions
|
@ -78,12 +78,12 @@ class ManageProblemSubmissionView(TitleMixin, ManageProblemSubmissionMixin, Deta
|
|||
)
|
||||
]
|
||||
context["results"] = sorted(map(itemgetter(0), Submission.RESULT))
|
||||
context["in_contest"] = False
|
||||
context["current_contest"] = None
|
||||
if (
|
||||
self.request.in_contest_mode
|
||||
and self.object in self.request.participation.contest.problems.all()
|
||||
):
|
||||
context["in_contest"] = True
|
||||
context["current_contest"] = self.request.participation.contest
|
||||
|
||||
return context
|
||||
|
||||
|
@ -106,20 +106,12 @@ class BaseActionSubmissionsView(
|
|||
|
||||
try:
|
||||
languages = list(map(int, self.request.POST.getlist("language")))
|
||||
results = list(map(int, self.request.POST.getlist("result")))
|
||||
contests = list(map(int, self.request.POST.getlist("contest")))
|
||||
except ValueError:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
contest = None
|
||||
try:
|
||||
in_contest = bool(self.request.POST.get("in_contest", False))
|
||||
if in_contest:
|
||||
contest = self.request.participation.contest
|
||||
except (KeyError, ValueError):
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
return self.generate_response(
|
||||
id_range, languages, self.request.POST.getlist("result"), contest
|
||||
)
|
||||
return self.generate_response(id_range, languages, results, contests)
|
||||
|
||||
def generate_response(self, id_range, languages, results, contest):
|
||||
raise NotImplementedError()
|
||||
|
|
|
@ -85,10 +85,17 @@ class ProblemSelect2View(Select2View):
|
|||
|
||||
|
||||
class ContestSelect2View(Select2View):
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.problem_id = kwargs.get("problem_id", request.GET.get("problem_id", ""))
|
||||
return super(ContestSelect2View, self).get(request, *args, **kwargs)
|
||||
|
||||
def get_queryset(self):
|
||||
return Contest.get_visible_contests(self.request.user).filter(
|
||||
q = Contest.get_visible_contests(self.request.user).filter(
|
||||
Q(key__icontains=self.term) | Q(name__icontains=self.term)
|
||||
)
|
||||
if self.problem_id:
|
||||
q = q.filter(problems=self.problem_id)
|
||||
return q
|
||||
|
||||
|
||||
class CommentSelect2View(Select2View):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue