mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2025-11-04 14:49:58 +08:00
增加测试用例版本号,用于judger重新编译spj程序
This commit is contained in:
parent
7414c80ee6
commit
3d396cc8e4
20
contest/migrations/0016_contestproblem_spj_version.py
Normal file
20
contest/migrations/0016_contestproblem_spj_version.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.9.1 on 2016-04-06 04:20
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('contest', '0015_auto_20160404_1641'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='contestproblem',
|
||||||
|
name='spj_version',
|
||||||
|
field=models.CharField(blank=True, max_length=32, null=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
@ -1,7 +1,8 @@
|
|||||||
# coding=utf-8
|
# coding=utf-8
|
||||||
import json
|
import json
|
||||||
|
import os
|
||||||
import datetime
|
import datetime
|
||||||
import redis
|
import hashlib
|
||||||
|
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.db import IntegrityError
|
from django.db import IntegrityError
|
||||||
@ -176,6 +177,11 @@ class ContestAdminAPIView(APIView):
|
|||||||
|
|
||||||
|
|
||||||
class ContestProblemAdminAPIView(APIView):
|
class ContestProblemAdminAPIView(APIView):
|
||||||
|
def _spj_version(self, code):
|
||||||
|
if code is None:
|
||||||
|
return None
|
||||||
|
return hashlib.md5(code.encode("utf-8")).hexdigest()
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
"""
|
"""
|
||||||
比赛题目发布json api接口
|
比赛题目发布json api接口
|
||||||
@ -205,6 +211,7 @@ class ContestProblemAdminAPIView(APIView):
|
|||||||
spj=data["spj"],
|
spj=data["spj"],
|
||||||
spj_language=data["spj_language"],
|
spj_language=data["spj_language"],
|
||||||
spj_code=data["spj_code"],
|
spj_code=data["spj_code"],
|
||||||
|
spj_version=self._spj_version(data["spj_code"]),
|
||||||
created_by=request.user,
|
created_by=request.user,
|
||||||
hint=data["hint"],
|
hint=data["hint"],
|
||||||
contest=contest,
|
contest=contest,
|
||||||
@ -228,6 +235,7 @@ class ContestProblemAdminAPIView(APIView):
|
|||||||
contest_problem = ContestProblem.objects.get(id=data["id"])
|
contest_problem = ContestProblem.objects.get(id=data["id"])
|
||||||
except ContestProblem.DoesNotExist:
|
except ContestProblem.DoesNotExist:
|
||||||
return error_response(u"该比赛题目不存在!")
|
return error_response(u"该比赛题目不存在!")
|
||||||
|
|
||||||
contest = Contest.objects.get(id=contest_problem.contest_id)
|
contest = Contest.objects.get(id=contest_problem.contest_id)
|
||||||
if request.user.admin_type != SUPER_ADMIN and contest.created_by != request.user:
|
if request.user.admin_type != SUPER_ADMIN and contest.created_by != request.user:
|
||||||
return error_response(u"比赛不存在")
|
return error_response(u"比赛不存在")
|
||||||
@ -241,6 +249,7 @@ class ContestProblemAdminAPIView(APIView):
|
|||||||
contest_problem.spj = data["spj"]
|
contest_problem.spj = data["spj"]
|
||||||
contest_problem.spj_language = data["spj_language"]
|
contest_problem.spj_language = data["spj_language"]
|
||||||
contest_problem.spj_code = data["spj_code"]
|
contest_problem.spj_code = data["spj_code"]
|
||||||
|
contest_problem.spj_version = self._spj_version(data["spj_code"])
|
||||||
contest_problem.samples = json.dumps(data["samples"])
|
contest_problem.samples = json.dumps(data["samples"])
|
||||||
contest_problem.hint = data["hint"]
|
contest_problem.hint = data["hint"]
|
||||||
contest_problem.visible = data["visible"]
|
contest_problem.visible = data["visible"]
|
||||||
|
|||||||
20
problem/migrations/0014_problem_spj_version.py
Normal file
20
problem/migrations/0014_problem_spj_version.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.9.1 on 2016-04-06 04:20
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('problem', '0013_auto_20160404_1641'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='problem',
|
||||||
|
name='spj_version',
|
||||||
|
field=models.CharField(blank=True, max_length=32, null=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
@ -42,6 +42,7 @@ class AbstractProblem(models.Model):
|
|||||||
spj = models.BooleanField(default=False)
|
spj = models.BooleanField(default=False)
|
||||||
spj_language = models.IntegerField(blank=True, null=True)
|
spj_language = models.IntegerField(blank=True, null=True)
|
||||||
spj_code = models.TextField(blank=True, null=True)
|
spj_code = models.TextField(blank=True, null=True)
|
||||||
|
spj_version = models.CharField(max_length=32, blank=True, null=True)
|
||||||
# 是否可见 false的话相当于删除
|
# 是否可见 false的话相当于删除
|
||||||
visible = models.BooleanField(default=True)
|
visible = models.BooleanField(default=True)
|
||||||
# 总共提交数量
|
# 总共提交数量
|
||||||
|
|||||||
@ -66,6 +66,11 @@ class ProblemTagAdminAPIView(APIView):
|
|||||||
|
|
||||||
|
|
||||||
class ProblemAdminAPIView(APIView):
|
class ProblemAdminAPIView(APIView):
|
||||||
|
def _spj_version(self, code):
|
||||||
|
if code is None:
|
||||||
|
return None
|
||||||
|
return hashlib.md5(code.encode("utf-8")).hexdigest()
|
||||||
|
|
||||||
@super_admin_required
|
@super_admin_required
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
"""
|
"""
|
||||||
@ -94,6 +99,7 @@ class ProblemAdminAPIView(APIView):
|
|||||||
spj=data["spj"],
|
spj=data["spj"],
|
||||||
spj_language=data["spj_language"],
|
spj_language=data["spj_language"],
|
||||||
spj_code=data["spj_code"],
|
spj_code=data["spj_code"],
|
||||||
|
spj_version=self._spj_version(data["spj_code"]),
|
||||||
difficulty=data["difficulty"],
|
difficulty=data["difficulty"],
|
||||||
created_by=request.user,
|
created_by=request.user,
|
||||||
hint=data["hint"],
|
hint=data["hint"],
|
||||||
@ -120,6 +126,7 @@ class ProblemAdminAPIView(APIView):
|
|||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
data = serializer.data
|
data = serializer.data
|
||||||
problem = Problem.objects.get(id=data["id"])
|
problem = Problem.objects.get(id=data["id"])
|
||||||
|
|
||||||
problem.title = data["title"]
|
problem.title = data["title"]
|
||||||
problem.description = data["description"]
|
problem.description = data["description"]
|
||||||
problem.input_description = data["input_description"]
|
problem.input_description = data["input_description"]
|
||||||
@ -131,6 +138,7 @@ class ProblemAdminAPIView(APIView):
|
|||||||
problem.spj = data["spj"]
|
problem.spj = data["spj"]
|
||||||
problem.spj_language = data["spj_language"]
|
problem.spj_language = data["spj_language"]
|
||||||
problem.spj_code = data["spj_code"]
|
problem.spj_code = data["spj_code"]
|
||||||
|
problem.spj_version = self._spj_version(data["spj_code"])
|
||||||
problem.difficulty = data["difficulty"]
|
problem.difficulty = data["difficulty"]
|
||||||
problem.samples = json.dumps(data["samples"])
|
problem.samples = json.dumps(data["samples"])
|
||||||
problem.hint = data["hint"]
|
problem.hint = data["hint"]
|
||||||
@ -146,7 +154,9 @@ class ProblemAdminAPIView(APIView):
|
|||||||
except ProblemTag.DoesNotExist:
|
except ProblemTag.DoesNotExist:
|
||||||
tag = ProblemTag.objects.create(name=tag)
|
tag = ProblemTag.objects.create(name=tag)
|
||||||
problem.tags.add(tag)
|
problem.tags.add(tag)
|
||||||
|
|
||||||
problem.save()
|
problem.save()
|
||||||
|
|
||||||
return success_response(ProblemSerializer(problem).data)
|
return success_response(ProblemSerializer(problem).data)
|
||||||
else:
|
else:
|
||||||
return serializer_invalid_response(serializer)
|
return serializer_invalid_response(serializer)
|
||||||
@ -237,8 +247,6 @@ class TestCaseUploadAPIView(APIView):
|
|||||||
# 否则就应该是spj的测试用例
|
# 否则就应该是spj的测试用例
|
||||||
spj = True
|
spj = True
|
||||||
|
|
||||||
print name_list, spj
|
|
||||||
|
|
||||||
if not spj:
|
if not spj:
|
||||||
if len(name_list) % 2 == 1:
|
if len(name_list) % 2 == 1:
|
||||||
return error_response(u"测试用例文件格式错误,文件数目为奇数")
|
return error_response(u"测试用例文件格式错误,文件数目为奇数")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user