修复problem统计错误

This commit is contained in:
zemal 2017-08-16 15:33:27 +08:00
parent 1587192ff9
commit 57b75fd511
3 changed files with 6 additions and 5 deletions

View File

@ -25,7 +25,7 @@ def process_pending_task():
if judge_cache.llen(CacheKey.waiting_queue): if judge_cache.llen(CacheKey.waiting_queue):
# 防止循环引入 # 防止循环引入
from judge.tasks import judge_task 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) judge_task.delay(**data)
@ -148,7 +148,8 @@ class JudgeDispatcher(object):
else: else:
problem = Problem.objects.select_related().get(_id=self.problem.id) problem = Problem.objects.select_related().get(_id=self.problem.id)
info = problem.statistic_info 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.statistic_info = info
problem.save(update_fields=["statistic_info"]) problem.save(update_fields=["statistic_info"])

View File

@ -83,6 +83,7 @@ class ProblemSerializer(serializers.ModelSerializer):
create_time = DateTimeTZField() create_time = DateTimeTZField()
last_update_time = DateTimeTZField() last_update_time = DateTimeTZField()
created_by = UsernameSerializer() created_by = UsernameSerializer()
statistic_info = serializers.JSONField()
class Meta: class Meta:
model = Problem model = Problem
@ -97,6 +98,7 @@ class ContestProblemSerializer(serializers.ModelSerializer):
create_time = DateTimeTZField() create_time = DateTimeTZField()
last_update_time = DateTimeTZField() last_update_time = DateTimeTZField()
created_by = UsernameSerializer() created_by = UsernameSerializer()
statistic_info = serializers.JSONField()
class Meta: class Meta:
model = ContestProblem model = ContestProblem

View File

@ -1,6 +1,7 @@
from account.decorators import login_required, check_contest_permission from account.decorators import login_required, check_contest_permission
from judge.tasks import judge_task from judge.tasks import judge_task
# from judge.dispatcher import JudgeDispatcher
from problem.models import Problem, ProblemRuleType, ContestProblem from problem.models import Problem, ProblemRuleType, ContestProblem
from contest.models import Contest, ContestStatus from contest.models import Contest, ContestStatus
from utils.api import APIView, validate_serializer from utils.api import APIView, validate_serializer
@ -11,9 +12,6 @@ from ..serializers import SubmissionSafeSerializer, SubmissionListSerializer
from utils.cache import throttling_cache from utils.cache import throttling_cache
# from judge.dispatcher import JudgeDispatcher
def _submit(response, user, problem_id, language, code, contest_id): def _submit(response, user, problem_id, language, code, contest_id):
# TODO: 预设默认值,需修改 # TODO: 预设默认值,需修改
controller = BucketController(user_id=user.id, controller = BucketController(user_id=user.id,