from django.conf import settings
from django.utils.translation import gettext_lazy as _
from oioioi.problems.models import Problem
from oioioi.problems.problem_sources import UploadedPackageSource
from oioioi.zeus.forms import ZeusProblemForm
from oioioi.zeus.models import ZeusProblemData
[docs]class ZeusProblemSource(UploadedPackageSource):
[docs] short_description = _("Add Zeus problem")
def __init__(self, zeus_instances=None):
if zeus_instances is None:
zeus_instances = [
(zeus_id, '%s: %s' % (zeus_id, url))
for zeus_id, (url, _login, _secret) in settings.ZEUS_INSTANCES.items()
]
self.zeus_instances = zeus_instances
[docs] def choose_backend(self, path, original_filename=None):
return 'oioioi.zeus.package.ZeusPackageBackend'
[docs] def create_env(
self,
user,
contest,
path,
package,
form,
round_id=None,
visibility=Problem.VISIBILITY_FRIENDS,
existing_problem=None,
original_filename=None,
):
env = super(ZeusProblemSource, self).create_env(
user,
contest,
path,
package,
form,
round_id,
visibility,
existing_problem,
original_filename,
)
env['zeus_id'] = form.cleaned_data['zeus_id']
env['zeus_problem_id'] = form.cleaned_data['zeus_problem_id']
# env['post_upload_handlers'].insert(0,
# 'oioioi.zeus.handlers.save_zeus_data')
return env