Reformat using black
This commit is contained in:
parent
efee4ad081
commit
a87fb49918
221 changed files with 19127 additions and 7310 deletions
|
@ -13,14 +13,16 @@ from judge.contest_format.registry import register_contest_format
|
|||
from judge.utils.timedelta import nice_repr
|
||||
|
||||
|
||||
@register_contest_format('default')
|
||||
@register_contest_format("default")
|
||||
class DefaultContestFormat(BaseContestFormat):
|
||||
name = gettext_lazy('Default')
|
||||
name = gettext_lazy("Default")
|
||||
|
||||
@classmethod
|
||||
def validate(cls, config):
|
||||
if config is not None and (not isinstance(config, dict) or config):
|
||||
raise ValidationError('default contest expects no config or empty dict as config')
|
||||
raise ValidationError(
|
||||
"default contest expects no config or empty dict as config"
|
||||
)
|
||||
|
||||
def __init__(self, contest, config):
|
||||
super(DefaultContestFormat, self).__init__(contest, config)
|
||||
|
@ -30,14 +32,18 @@ class DefaultContestFormat(BaseContestFormat):
|
|||
points = 0
|
||||
format_data = {}
|
||||
|
||||
for result in participation.submissions.values('problem_id').annotate(
|
||||
time=Max('submission__date'), points=Max('points'),
|
||||
for result in participation.submissions.values("problem_id").annotate(
|
||||
time=Max("submission__date"),
|
||||
points=Max("points"),
|
||||
):
|
||||
dt = (result['time'] - participation.start).total_seconds()
|
||||
if result['points']:
|
||||
dt = (result["time"] - participation.start).total_seconds()
|
||||
if result["points"]:
|
||||
cumtime += dt
|
||||
format_data[str(result['problem_id'])] = {'time': dt, 'points': result['points']}
|
||||
points += result['points']
|
||||
format_data[str(result["problem_id"])] = {
|
||||
"time": dt,
|
||||
"points": result["points"],
|
||||
}
|
||||
points += result["points"]
|
||||
|
||||
participation.cumtime = max(cumtime, 0)
|
||||
participation.score = points
|
||||
|
@ -49,30 +55,50 @@ class DefaultContestFormat(BaseContestFormat):
|
|||
format_data = (participation.format_data or {}).get(str(contest_problem.id))
|
||||
if format_data:
|
||||
return format_html(
|
||||
u'<td class="{state} problem-score-col"><a href="{url}">{points}<div class="solving-time">{time}</div></a></td>',
|
||||
state=(('pretest-' if self.contest.run_pretests_only and contest_problem.is_pretested else '') +
|
||||
self.best_solution_state(format_data['points'], contest_problem.points)),
|
||||
url=reverse('contest_user_submissions',
|
||||
args=[self.contest.key, participation.user.user.username, contest_problem.problem.code]),
|
||||
points=floatformat(format_data['points'], -self.contest.points_precision),
|
||||
time=nice_repr(timedelta(seconds=format_data['time']), 'noday'),
|
||||
'<td class="{state} problem-score-col"><a href="{url}">{points}<div class="solving-time">{time}</div></a></td>',
|
||||
state=(
|
||||
(
|
||||
"pretest-"
|
||||
if self.contest.run_pretests_only
|
||||
and contest_problem.is_pretested
|
||||
else ""
|
||||
)
|
||||
+ self.best_solution_state(
|
||||
format_data["points"], contest_problem.points
|
||||
)
|
||||
),
|
||||
url=reverse(
|
||||
"contest_user_submissions",
|
||||
args=[
|
||||
self.contest.key,
|
||||
participation.user.user.username,
|
||||
contest_problem.problem.code,
|
||||
],
|
||||
),
|
||||
points=floatformat(
|
||||
format_data["points"], -self.contest.points_precision
|
||||
),
|
||||
time=nice_repr(timedelta(seconds=format_data["time"]), "noday"),
|
||||
)
|
||||
else:
|
||||
return mark_safe('<td class="problem-score-col"></td>')
|
||||
|
||||
def display_participation_result(self, participation):
|
||||
return format_html(
|
||||
u'<td class="user-points">{points}<div class="solving-time">{cumtime}</div></td>',
|
||||
'<td class="user-points">{points}<div class="solving-time">{cumtime}</div></td>',
|
||||
points=floatformat(participation.score, -self.contest.points_precision),
|
||||
cumtime=nice_repr(timedelta(seconds=participation.cumtime), 'noday'),
|
||||
cumtime=nice_repr(timedelta(seconds=participation.cumtime), "noday"),
|
||||
)
|
||||
|
||||
def get_problem_breakdown(self, participation, contest_problems):
|
||||
return [(participation.format_data or {}).get(str(contest_problem.id)) for contest_problem in contest_problems]
|
||||
return [
|
||||
(participation.format_data or {}).get(str(contest_problem.id))
|
||||
for contest_problem in contest_problems
|
||||
]
|
||||
|
||||
def get_contest_problem_label_script(self):
|
||||
return '''
|
||||
return """
|
||||
function(n)
|
||||
return tostring(math.floor(n + 1))
|
||||
end
|
||||
'''
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue