Add problem action filter for contest

This commit is contained in:
cuom1999 2023-03-25 22:11:56 -05:00
parent c8d4a57270
commit a07b147ea6
4 changed files with 60 additions and 36 deletions

View file

@ -8,7 +8,7 @@ from judge.utils.celery import Progress
__all__ = ("apply_submission_filter", "rejudge_problem_filter", "rescore_problem")
def apply_submission_filter(queryset, id_range, languages, results):
def apply_submission_filter(queryset, id_range, languages, results, contest):
if id_range:
start, end = id_range
queryset = queryset.filter(id__gte=start, id__lte=end)
@ -16,16 +16,18 @@ def apply_submission_filter(queryset, id_range, languages, results):
queryset = queryset.filter(language_id__in=languages)
if results:
queryset = queryset.filter(result__in=results)
if contest:
queryset = queryset.filter(contest_object=contest)
queryset = queryset.exclude(status__in=Submission.IN_PROGRESS_GRADING_STATUS)
return queryset
@shared_task(bind=True)
def rejudge_problem_filter(
self, problem_id, id_range=None, languages=None, results=None
self, problem_id, id_range=None, languages=None, results=None, contest=None
):
queryset = Submission.objects.filter(problem_id=problem_id)
queryset = apply_submission_filter(queryset, id_range, languages, results)
queryset = apply_submission_filter(queryset, id_range, languages, contest)
rejudged = 0
with Progress(self, queryset.count()) as p: