Source code for oioioi.contests.management.commands.find_all_se_submissions

from __future__ import print_function

import six
import time

from django.core.management.base import BaseCommand
from django.db.models import Q
from django.utils.translation import gettext as _
from django.db import transaction
from oioioi.contests.models import Contest, Round, Submission, SubmissionReport
from datetime import datetime, timedelta

[docs]class Command(BaseCommand):
[docs] help = _("Display all submissions that got System Error in the past N days")
[docs] def add_arguments(self, parser): parser.add_argument('-n', '--numdays', action='store', type=int, dest='numdays', help="How many past days of reports to check", default=10)
[docs] def handle(self, *args, **options): numdays = options["numdays"] subs = Submission.objects.filter(date__gte=datetime.now()-timedelta(days=numdays)) raporty = SubmissionReport.objects.filter(submission__in=subs) # problem_instance.controller.judge(submission, is_rejudge=True) q = Q( failurereport__isnull=False, ) | Q( testreport__status='SE' ) raporty_z_se = raporty.filter(q).distinct() for r in raporty_z_se: pi = r.submission.problem_instance with transaction.atomic(): pi.controller.judge(r.submission, is_rejudge=True) time.sleep(1) print(r.submission.id, end=",") print(r.submission, end=",") print(pi.contest, ",", pi.problem, ",", pi.short_name)