Add pdf option for problem

This commit is contained in:
cuom1999 2022-08-30 22:50:08 -05:00
parent 98b8cbe518
commit 69f08e84b5
7 changed files with 65 additions and 3 deletions

View file

@ -18,6 +18,7 @@ from judge.models.profile import Organization, Profile
from judge.models.runtime import Language
from judge.user_translations import gettext as user_gettext
from judge.utils.raw_sql import RawSQLColumn, unique_together_left_join
from judge.models.problem_data import problem_data_storage, problem_directory_file_helper
__all__ = [
"ProblemGroup",
@ -31,6 +32,8 @@ __all__ = [
"TranslatedProblemForeignKeyQuerySet",
]
def problem_directory_file(data, filename):
return problem_directory_file_helper(data.code, filename)
class ProblemType(models.Model):
name = models.CharField(
@ -160,7 +163,7 @@ class Problem(models.Model):
db_index=True,
help_text=_("The full name of the problem, " "as shown in the problem list."),
)
description = models.TextField(verbose_name=_("problem body"))
description = models.TextField(verbose_name=_("problem body"), blank=True)
authors = models.ManyToManyField(
Profile,
verbose_name=_("creators"),
@ -299,6 +302,13 @@ class Problem(models.Model):
is_organization_private = models.BooleanField(
verbose_name=_("private to organizations"), default=False
)
pdf_description = models.FileField(
verbose_name=_("pdf statement"),
storage=problem_data_storage,
null=True,
blank=True,
upload_to=problem_directory_file,
)
def __init__(self, *args, **kwargs):
super(Problem, self).__init__(*args, **kwargs)

View file

@ -20,12 +20,12 @@ __all__ = [
problem_data_storage = ProblemDataStorage()
def _problem_directory_file(code, filename):
def problem_directory_file_helper(code, filename):
return os.path.join(code, os.path.basename(filename))
def problem_directory_file(data, filename):
return _problem_directory_file(data.problem.code, filename)
return problem_directory_file_helper(data.problem.code, filename)
CHECKERS = (