Temporary fix for abort race
This commit is contained in:
parent
3ef47518ee
commit
1004563a53
3 changed files with 31 additions and 3 deletions
24
judge/tasks/experiment.py
Normal file
24
judge/tasks/experiment.py
Normal 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)
|
|
@ -233,8 +233,12 @@ class SubmissionSourceRaw(SubmissionSource):
|
|||
@require_POST
|
||||
def abort_submission(request, 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
|
||||
not request.user.has_perm('abort_any_submission')):
|
||||
# if (not request.user.is_authenticated or (submission.was_rejudged or (request.profile != submission.user)) and
|
||||
# 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()
|
||||
submission.abort()
|
||||
return HttpResponseRedirect(reverse('submission_status', args=(submission.id,)))
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
<div id="test-cases">{% include "submission/status-testcases.html" %}</div>
|
||||
|
||||
{% 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">
|
||||
<br>
|
||||
<hr>
|
||||
|
|
Loading…
Reference in a new issue