Source code for oioioi.sinolpack.models

import yaml
from django.db import models
from django.utils.translation import gettext_lazy as _

from oioioi.filetracker.fields import FileField
from oioioi.problems.models import Problem, ProblemPackage, make_problem_filename


[docs]class ExtraConfig(models.Model): """Model to store ``config.yml`` present in some Sinol packages."""
[docs] problem = models.OneToOneField(Problem, on_delete=models.CASCADE)
[docs] config = models.TextField(verbose_name=_("config"))
@property
[docs] def parsed_config(self): if not self.config: return {} return yaml.safe_load(self.config)
[docs] class Meta(object):
[docs] verbose_name = _("sinolpack's configuration")
[docs] verbose_name_plural = _("sinolpack's configurations")
[docs]class ExtraFile(models.Model): """Model to store extra files (for example ``extra.zip``) present in some Sinol packages."""
[docs] problem = models.ForeignKey(Problem, on_delete=models.CASCADE)
[docs] name = models.CharField(max_length=255, verbose_name=_("name"))
[docs] file = FileField(upload_to=make_problem_filename)
[docs] class Meta(object):
[docs] verbose_name = _("sinolpack's extra file")
[docs] verbose_name_plural = _("sinolpack's extra files")
[docs]class OriginalPackage(models.Model):
[docs] problem = models.ForeignKey(Problem, on_delete=models.CASCADE)
[docs] problem_package = models.ForeignKey( ProblemPackage, null=True, blank=True, on_delete=models.CASCADE )
[docs] class Meta(object):
[docs] verbose_name = _("original problem package")
[docs] verbose_name_plural = _("original problem packages")