Skip to content

Commit 2a86889

Browse files
committed
Result percentage as fractions.Fraction
1 parent ef75347 commit 2a86889

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

oioioi/programs/controllers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -753,6 +753,11 @@ def render_report(self, request, report):
753753
signals_to_explain.add(signal)
754754
except ValueError:
755755
pass
756+
if test.result_percentage_numerator and test.result_percentage_denominator:
757+
test.result_percentage = f"""{round(
758+
test.result_percentage_numerator / test.result_percentage_denominator,
759+
2
760+
):g}"""
756761

757762
tests_records = [
758763
{'display_type': get_report_display_type(request, test), 'test': test}

oioioi/programs/handlers.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import functools
22
import logging
33
from collections import defaultdict
4+
from fractions import Fraction
45

56
from django.conf import settings
67
from django.db import transaction
@@ -555,9 +556,10 @@ def make_report(env, kind='NORMAL', save_scores=True, **kwargs):
555556
test_report.score = result['score'] if save_scores else None
556557
test_report.status = result['status']
557558
test_report.time_used = result['time_used']
558-
percentage = result.get('result_percentage', 0.)
559-
if percentage != 100. and percentage != 0.:
560-
test_report.result_percentage = percentage
559+
percentage = Fraction(*result.get('result_percentage', (0, 1)))
560+
if percentage != 100 and percentage != 0:
561+
test_report.result_percentage_numerator = percentage.numerator
562+
test_report.result_percentage_denominator = percentage.denominator
561563

562564
comment = result.get('result_string', '')
563565
if comment.lower() in ['ok', 'time limit exceeded']: # Annoying

oioioi/programs/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,8 @@ class TestReport(models.Model):
326326
max_score = ScoreField(null=True, blank=True)
327327
time_used = models.IntegerField(blank=True)
328328
output_file = FileField(upload_to=make_output_filename, null=True, blank=True)
329-
result_percentage = models.FloatField(null=True, blank=True)
329+
result_percentage_numerator = models.IntegerField(null=True, blank=True)
330+
result_percentage_denominator = models.IntegerField(null=True, blank=True)
330331

331332
test = models.ForeignKey(Test, blank=True, null=True, on_delete=models.SET_NULL)
332333
test_name = models.CharField(max_length=30)

0 commit comments

Comments
 (0)