fix problem statistic count error

This commit is contained in:
zema1
2018-03-29 21:54:38 +08:00
parent 93d0ae38b1
commit 85f9fbbb81
2 changed files with 35 additions and 13 deletions

View File

@@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
from django.db.models import Count
def fix_problem_count_bugs(apps, schema_editor):
Submission = apps.get_model("submission", "Submission")
Problem = apps.get_model("problem", "Problem")
for item in Problem.objects.filter(contest__isnull=True):
submissions = Submission.objects.filter(problem=item)
item.submission_number = submissions.count()
results_count = submissions.values('result').annotate(count=Count('result')).order_by('result')
info = dict()
item.accepted_number = 0
for stat in results_count:
result = stat["result"]
if result == 0:
item.accepted_number = stat["count"]
info[str(result)] = stat["count"]
item.statistic_info = info
item.save(update_fields=["submission_number", "accepted_number", "statistic_info"])
class Migration(migrations.Migration):
dependencies = [
('problem', '0010_problem_spj_compile_ok'),
]
operations = [
migrations.RunPython(fix_problem_count_bugs, reverse_code=migrations.RunPython.noop)
]