Add pdf option for problem
This commit is contained in:
parent
98b8cbe518
commit
69f08e84b5
7 changed files with 65 additions and 3 deletions
|
@ -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)
|
||||
|
|
|
@ -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 = (
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue