Temporary fix for abort race

This commit is contained in:
cuom1999 2020-12-01 17:18:17 -06:00
parent 3ef47518ee
commit 1004563a53
3 changed files with 31 additions and 3 deletions

24
judge/tasks/experiment.py Normal file
View file

@ -0,0 +1,24 @@
from collections import defaultdict
from judge.models import SubmissionTestCase, Problem
def generate_report(problem):
testcases = SubmissionTestCase.objects.filter(submission__problem=problem).all()
score = defaultdict(int)
total = defaultdict(int)
rate = defaultdict(int)
for case in testcases.iterator():
score[case.case] += int(case.status == 'AC')
total[case.case] += 1
for i in score:
rate[i] = score[i] / total[i]
for i, _ in sorted(rate.items(), key=lambda x: x[1], reverse=True):
print(i, score[i], total[i], rate[i])
def test(code):
problem = Problem.objects.get(code=code)
generate_report(problem)

View file

@ -233,8 +233,12 @@ class SubmissionSourceRaw(SubmissionSource):
@require_POST @require_POST
def abort_submission(request, submission): def abort_submission(request, submission):
submission = get_object_or_404(Submission, id=int(submission)) submission = get_object_or_404(Submission, id=int(submission))
if (not request.user.is_authenticated or (submission.was_rejudged or (request.profile != submission.user)) and # if (not request.user.is_authenticated or (submission.was_rejudged or (request.profile != submission.user)) and
not request.user.has_perm('abort_any_submission')): # not request.user.has_perm('abort_any_submission')):
# raise PermissionDenied()
if (not request.user.is_authenticated
or submission.was_rejudged
or not request.user.has_perm('abort_any_submission')):
raise PermissionDenied() raise PermissionDenied()
submission.abort() submission.abort()
return HttpResponseRedirect(reverse('submission_status', args=(submission.id,))) return HttpResponseRedirect(reverse('submission_status', args=(submission.id,)))

View file

@ -78,7 +78,7 @@
<div id="test-cases">{% include "submission/status-testcases.html" %}</div> <div id="test-cases">{% include "submission/status-testcases.html" %}</div>
{% if not submission.is_graded %} {% if not submission.is_graded %}
{% if request.user == submission.user.user or perms.judge.abort_any_submission %} {% if perms.judge.abort_any_submission %}
<div id="abort-button"> <div id="abort-button">
<br> <br>
<hr> <hr>