增加Special Judge的基础配置和创建Special Judge题目的逻辑

This commit is contained in:
virusdefender
2016-04-04 16:43:43 +08:00
parent 416c2b1b32
commit d7532ad446
13 changed files with 164 additions and 4 deletions

View File

@@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-04-04 07:09
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('problem', '0011_auto_20151017_1227'),
]
operations = [
migrations.AddField(
model_name='problem',
name='spj',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='problem',
name='spj_code',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='problem',
name='spj_code_language',
field=models.IntegerField(blank=True, null=True),
),
]

View File

@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-04-04 08:41
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('problem', '0012_auto_20160404_1509'),
]
operations = [
migrations.RenameField(
model_name='problem',
old_name='spj_code_language',
new_name='spj_language',
),
]

View File

@@ -38,6 +38,10 @@ class AbstractProblem(models.Model):
time_limit = models.IntegerField()
# 内存限制 单位是MB
memory_limit = models.IntegerField()
# special judge
spj = models.BooleanField(default=False)
spj_language = models.IntegerField(blank=True, null=True)
spj_code = models.TextField(blank=True, null=True)
# 是否可见 false的话相当于删除
visible = models.BooleanField(default=True)
# 总共提交数量

View File

@@ -27,6 +27,9 @@ class CreateProblemSerializer(serializers.Serializer):
test_case_id = serializers.CharField(max_length=40)
time_limit = serializers.IntegerField(min_value=1, max_value=10000)
memory_limit = serializers.IntegerField(min_value=16)
spj = serializers.BooleanField()
spj_language = serializers.IntegerField(required=False, default=None)
spj_code = serializers.CharField(max_length=10000, required=False, default=None)
difficulty = serializers.IntegerField()
tags = serializers.ListField(child=serializers.CharField(max_length=10))
hint = serializers.CharField(max_length=3000, allow_blank=True)
@@ -73,6 +76,9 @@ class EditProblemSerializer(serializers.Serializer):
source = serializers.CharField(max_length=100)
time_limit = serializers.IntegerField(min_value=1)
memory_limit = serializers.IntegerField(min_value=1)
spj = serializers.BooleanField()
spj_language = serializers.IntegerField(required=False, default=None)
spj_code = serializers.CharField(max_length=10000, required=False, default=None)
difficulty = serializers.IntegerField()
tags = serializers.ListField(child=serializers.CharField(max_length=20))
samples = ProblemSampleSerializer()

View File

@@ -91,6 +91,9 @@ class ProblemAdminAPIView(APIView):
samples=json.dumps(data["samples"]),
time_limit=data["time_limit"],
memory_limit=data["memory_limit"],
spj=data["spj"],
spj_language=data["spj_language"],
spj_code=data["spj_code"],
difficulty=data["difficulty"],
created_by=request.user,
hint=data["hint"],