Source code for oioioi.oisubmit.forms
from django import forms
from django.conf import settings
from django.forms import ValidationError
from django.utils.translation import gettext_lazy as _
from oioioi.contests.forms import SubmissionForm
from oioioi.contests.models import ProblemInstance
[docs]class OISubmitSubmissionForm(SubmissionForm):
def __init__(self, request, *args, **kwargs):
super(OISubmitSubmissionForm, self).__init__(request, *args, **kwargs)
self.fields['problem_shortname'] = forms.CharField(
label=_("problem short name")
)
self.fields['localtime'] = forms.DateTimeField(
label=_("local time"), required=False
)
self.fields['siotime'] = forms.DateTimeField(
label=_("sio time"), required=False
)
self.fields['magickey'] = forms.CharField(label=_("magic key"))
del self.fields['problem_instance_id']
[docs] def clean_magickey(self):
data = self.cleaned_data['magickey']
if data != settings.OISUBMIT_MAGICKEY:
raise ValidationError(_("Magic key is not valid."))
return data
[docs] def clean(self, **kwargs):
cleaned_data = self.cleaned_data
try:
pi = ProblemInstance.objects.filter(contest=self.request.contest).get(
short_name=self.cleaned_data['problem_shortname']
)
cleaned_data['problem_instance_id'] = pi.id
del cleaned_data['problem_shortname']
except ProblemInstance.DoesNotExist:
self._errors['problem_shortname'] = self.error_class(
[_("Invalid problem shortname")]
)
if 'problem_instance_id' in cleaned_data:
del cleaned_data['problem_instance_id']
return cleaned_data
return super(OISubmitSubmissionForm, self).clean(
check_submission_limit=False, check_round_times=False
)