From 0836f74d179fde3ee9e96529bae676eafcc3aace Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sat, 14 Aug 2021 23:06:16 +0100 Subject: [PATCH] Improve 'last played' strings --- app/helpers.py | 18 ++++++++++++++++-- app/model.py | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/helpers.py b/app/helpers.py index 02b20b4..ec030bb 100644 --- a/app/helpers.py +++ b/app/helpers.py @@ -3,7 +3,13 @@ from datetime import datetime, date def get_relative_date(past_date, reference_date=None): """ - Return relative date as string. + Return how long before reference_date past_date is as string. + + Params: + @past_date: datetime + @reference_date: datetime, defaults to current date and time + + @return: string """ if not past_date: @@ -19,7 +25,15 @@ def get_relative_date(past_date, reference_date=None): if weeks == days == 0: # Played today, so return time instead return past_date.strftime("%H:%M") - return f"{weeks} weeks, {days} days ago" + if weeks == 1: + weeks_str = "week" + else: + weeks_str = "weeks" + if days == 1: + days_str = "day" + else: + days_str = "days" + return f"{weeks} {weeks_str}, {days} {days_str} ago" def ms_to_mmss(ms, decimals=0, negative=False): diff --git a/app/model.py b/app/model.py index 5fca282..042a745 100644 --- a/app/model.py +++ b/app/model.py @@ -148,6 +148,24 @@ class Playdates(Base): (func.time(Playdates.lastplayed) > after), ).order_by(Playdates.lastplayed.desc()).first() + @staticmethod + def last_show(session, track): + """ + Return datetime track last played during show time or None + + FIXME: hard coded times in here + """ + + # dayofweek: 1 = Sunday, 2 = Monday, ..., 7 = Saturday. + friday = 6 + after = time(20, 0) + + return session.query(Playdates).filter( + (Playdates.track_id == track.id), + (func.dayofweek(Playdates.lastplayed) == friday), + (func.time(Playdates.lastplayed) > after), + ).order_by(Playdates.lastplayed.desc()).first() + class Playlists(Base): """