From 57b75fd5117dc179849cbe05babe4e50defbb286 Mon Sep 17 00:00:00 2001 From: zemal Date: Wed, 16 Aug 2017 15:33:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dproblem=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- judge/dispatcher.py | 5 +++-- problem/serializers.py | 2 ++ submission/views/oj.py | 4 +--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/judge/dispatcher.py b/judge/dispatcher.py index c64fb4df..1bcdba29 100644 --- a/judge/dispatcher.py +++ b/judge/dispatcher.py @@ -25,7 +25,7 @@ def process_pending_task(): if judge_cache.llen(CacheKey.waiting_queue): # 防止循环引入 from judge.tasks import judge_task - data = json.loads(judge_cache.rpop(CacheKey.waiting_queue)) + data = json.loads(judge_cache.rpop(CacheKey.waiting_queue).decode("utf-8")) judge_task.delay(**data) @@ -148,7 +148,8 @@ class JudgeDispatcher(object): else: problem = Problem.objects.select_related().get(_id=self.problem.id) info = problem.statistic_info - info[self.submission.result] = info.get(self.submission.result, 0) + 1 + result = str(self.submission.result) + info[result] = info.get(result, 0) + 1 problem.statistic_info = info problem.save(update_fields=["statistic_info"]) diff --git a/problem/serializers.py b/problem/serializers.py index fff369d9..92b0f1f8 100644 --- a/problem/serializers.py +++ b/problem/serializers.py @@ -83,6 +83,7 @@ class ProblemSerializer(serializers.ModelSerializer): create_time = DateTimeTZField() last_update_time = DateTimeTZField() created_by = UsernameSerializer() + statistic_info = serializers.JSONField() class Meta: model = Problem @@ -97,6 +98,7 @@ class ContestProblemSerializer(serializers.ModelSerializer): create_time = DateTimeTZField() last_update_time = DateTimeTZField() created_by = UsernameSerializer() + statistic_info = serializers.JSONField() class Meta: model = ContestProblem diff --git a/submission/views/oj.py b/submission/views/oj.py index 5af28974..b1332846 100644 --- a/submission/views/oj.py +++ b/submission/views/oj.py @@ -1,6 +1,7 @@ from account.decorators import login_required, check_contest_permission from judge.tasks import judge_task +# from judge.dispatcher import JudgeDispatcher from problem.models import Problem, ProblemRuleType, ContestProblem from contest.models import Contest, ContestStatus from utils.api import APIView, validate_serializer @@ -11,9 +12,6 @@ from ..serializers import SubmissionSafeSerializer, SubmissionListSerializer from utils.cache import throttling_cache -# from judge.dispatcher import JudgeDispatcher - - def _submit(response, user, problem_id, language, code, contest_id): # TODO: 预设默认值,需修改 controller = BucketController(user_id=user.id,