add migration to correct database record; rejudge function now can work normally.
This commit is contained in:
38
submission/migrations/0010_fix_submission_number.py
Normal file
38
submission/migrations/0010_fix_submission_number.py
Normal file
@@ -0,0 +1,38 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
from django.db.models import Count
|
||||
|
||||
|
||||
def fix_rejudge_bugs(apps, schema_editor):
|
||||
Submission = apps.get_model("submission", "Submission")
|
||||
Problem = apps.get_model("problem", "Problem")
|
||||
User = apps.get_model("account", "User")
|
||||
|
||||
for item in Problem.objects.filter(contest__isnull=True):
|
||||
submissions = Submission.objects.filter(problem=item)
|
||||
item.submission_number = submissions.count()
|
||||
results_count = submissions.annotate(count=Count('result')).values('result', 'count')
|
||||
for stat in results_count:
|
||||
if stat["result"] == 0:
|
||||
item.accepted_number = stat["count"]
|
||||
item.statistic_info[str(stat)] = stat["count"]
|
||||
item.save(update_fields=["submission_number", "accepted_number", "statistic_info"])
|
||||
|
||||
for user in User.objects.all():
|
||||
submissions = Submission.objects.filter(user_id=user.id)
|
||||
profile = user.userprofile
|
||||
profile.submission_number = submissions.count()
|
||||
profile.accepted_number = submissions.filter(result=0).count()
|
||||
profile.save(update_fields=["submission_number", "accepted_number"])
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
('submission', '0009_delete_user_output'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(fix_rejudge_bugs, reverse_code=migrations.RunPython.noop)
|
||||
]
|
||||
@@ -2,7 +2,7 @@ from account.decorators import super_admin_required
|
||||
from judge.tasks import judge_task
|
||||
# from judge.dispatcher import JudgeDispatcher
|
||||
from utils.api import APIView
|
||||
from ..models import Submission, JudgeStatus
|
||||
from ..models import Submission
|
||||
|
||||
|
||||
class SubmissionRejudgeAPI(APIView):
|
||||
@@ -19,5 +19,5 @@ class SubmissionRejudgeAPI(APIView):
|
||||
submission.statistic_info = {}
|
||||
submission.save()
|
||||
|
||||
judge_task.delay(submission.id, submission.problem.id, is_rejudge=True)
|
||||
judge_task.delay(submission.id, submission.problem.id)
|
||||
return self.success()
|
||||
|
||||
Reference in New Issue
Block a user