Source code for oioioi.testrun.models
from django.conf import settings
from django.db import models
from django.utils.translation import gettext_lazy as _
from oioioi.base.fields import EnumField
from oioioi.contests.models import (
SubmissionReport,
submission_kinds,
submission_report_kinds,
submission_statuses,
)
from oioioi.filetracker.fields import FileField
from oioioi.problems.models import Problem, ProblemInstance
from oioioi.programs.models import ProgramSubmission
submission_statuses.register('TESTRUN_OK', _("No error"))
submission_kinds.register('TESTRUN', _("Test run"))
submission_report_kinds.register('TESTRUN', _("Test run report"))
[docs]def make_custom_input_filename(instance, filename):
if not instance.id:
instance.save()
return 'testruns/%s/%d/in' % (instance.problem_instance.contest.id, instance.id)
[docs]def make_custom_output_filename(instance, filename):
# This code is dead (it's result is ignored) with current implementation
# of assigning file from filetracker to a FileField.
submission = instance.submission_report.submission
return 'testruns/%s/%d/%d-out' % (
submission.problem_instance.contest.id,
submission.id,
instance.submission_report.id,
)
[docs]class TestRunConfig(models.Model):
"""Represents a test run config for problem instance.
Test run for program is enabled iff this model exits.
"""
[docs] problem_instance = models.OneToOneField(
ProblemInstance,
verbose_name=_("problem instance"),
related_name='test_run_config',
on_delete=models.CASCADE,
)
[docs] test_runs_limit = models.IntegerField(
default=settings.DEFAULT_TEST_RUNS_LIMIT, verbose_name=_("test runs limit")
)