Fix time code sorting.

Event lists show 00:XX codes after 23:XX codes.
This commit is contained in:
2019-10-19 00:50:38 +02:00
parent f7eebd54f5
commit 64a85e92f5
2 changed files with 16 additions and 3 deletions

View File

@@ -37,6 +37,19 @@ def timedelta_to_str(data: timedelta) -> str:
) )
def by_time(e):
"""
Custom sort key for sorting by time codes in the format HH:MM
This version sorts codes with hour '00' after '23'
"""
if not hasattr(e, "time") or isinstance(e.time, time):
return id(e)
if e.time.hour == 0:
return f"24{e.time.minute}"
return f"{e.time.hour}{e.time.minute}"
def compute_timedelta(start: time, end: time) -> float: def compute_timedelta(start: time, end: time) -> float:
if not start or not end: if not start or not end:
return 0 return 0

View File

@@ -2,7 +2,7 @@ from flask import render_template, request, redirect, url_for
from estusshots import app from estusshots import app
from estusshots import forms, orm from estusshots import forms, orm
from estusshots.util import authorize from estusshots.util import authorize, by_time
from estusshots.orm import Season, Episode, Player from estusshots.orm import Season, Episode, Player
@@ -18,8 +18,8 @@ def episode_detail(season_id: int, episode_id: int):
"episode": episode, "episode": episode,
"season": episode.season, "season": episode.season,
"players": episode.players, "players": episode.players,
"deaths": sorted(deaths, key=lambda x: x.time), "deaths": sorted(deaths, key=by_time),
"victories": sorted(victories, key=lambda x: x.time) "victories": sorted(victories, key=by_time)
} }
return render_template("episode_details.html", model=model) return render_template("episode_details.html", model=model)