diff --git a/problem/migrations/0003_problem_template.py b/problem/migrations/0003_problem_template.py new file mode 100644 index 0000000..3e1035a --- /dev/null +++ b/problem/migrations/0003_problem_template.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.12 on 2017-02-05 08:02 +from __future__ import unicode_literals + +from django.db import migrations +import jsonfield.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('problem', '0002_auto_20170202_0826'), + ] + + operations = [ + migrations.AddField( + model_name='problem', + name='template', + field=jsonfield.fields.JSONField(default={}), + preserve_default=False, + ), + ] diff --git a/problem/models.py b/problem/models.py index e0507c4..54b15c8 100644 --- a/problem/models.py +++ b/problem/models.py @@ -29,6 +29,7 @@ class AbstractProblem(models.Model): test_case_score = JSONField() hint = RichTextField(blank=True, null=True) languages = JSONField() + template = JSONField() create_time = models.DateTimeField(auto_now_add=True) # we can not use auto_now here last_update_time = models.DateTimeField(blank=True, null=True) diff --git a/problem/serializers.py b/problem/serializers.py index 3038e47..3c1c7d8 100644 --- a/problem/serializers.py +++ b/problem/serializers.py @@ -22,6 +22,10 @@ class CreateTestCaseScoreSerializer(serializers.Serializer): score = serializers.IntegerField(min_value=0) +class CreateProblemCodeTemplateSerializer(serializers.Serializer): + pass + + class Difficulty(object): LOW = "Low" MID = "Mid" @@ -38,7 +42,8 @@ class CreateOrEditProblemSerializer(serializers.Serializer): test_case_score = serializers.ListField(child=CreateTestCaseScoreSerializer(), allow_empty=False) time_limit = serializers.IntegerField(min_value=1, max_value=1000 * 60) memory_limit = serializers.IntegerField(min_value=1, max_value=1024) - languages = serializers.ListField(child=serializers.ChoiceField(choices=language_names), allow_empty=False) + languages = serializers.MultipleChoiceField(choices=language_names) + template = serializers.DictField(child=serializers.CharField(min_length=1)) rule_type = serializers.ChoiceField(choices=[ProblemRuleType.ACM, ProblemRuleType.OI]) spj = serializers.BooleanField() spj_language = serializers.ChoiceField(choices=spj_language_names, allow_blank=True, allow_null=True) @@ -67,6 +72,7 @@ class ProblemSerializer(serializers.ModelSerializer): samples = serializers.JSONField() test_case_score = serializers.JSONField() languages = serializers.JSONField() + template = serializers.JSONField() tags = serializers.SlugRelatedField(many=True, slug_field="name", read_only=True) create_time = DateTimeTZField() last_update_time = DateTimeTZField()