Update last played time during show

Fixes #43
This commit is contained in:
Keith Edmunds 2021-08-14 09:05:14 +01:00
parent 4687ef5288
commit 0e4de857d4
3 changed files with 22 additions and 16 deletions

View File

@ -6,20 +6,19 @@ def get_relative_date(past_date, reference_date=None):
Return relative date as string. Return relative date as string.
""" """
if not past_date:
return "Never"
if not reference_date: if not reference_date:
reference_date = datetime.now().date() reference_date = datetime.now()
# Check parameters # Check parameters
if type(past_date) != date:
return "get_relative_date() first parameter is not a date"
if type(reference_date) != date:
return "get_relative_date() second parameter is not a date"
if past_date > reference_date: if past_date > reference_date:
return "get_relative_date() past_date is after relative_date" return "get_relative_date() past_date is after relative_date"
weeks, days = divmod((reference_date - past_date).days, 7) weeks, days = divmod((reference_date - past_date).days, 7)
if weeks == days == 0: if weeks == days == 0:
return "Today" # Played today, so return time instead
return past_date.strftime("%H:%M")
return f"{weeks} weeks, {days} days ago" return f"{weeks} weeks, {days} days ago"

View File

@ -108,12 +108,16 @@ class Playdates(Base):
session.commit() session.commit()
@staticmethod @staticmethod
def last_played(session, track): def last_played(session, track_id):
"Return datetime track last played or None" "Return datetime track last played or None"
return session.query(Playdates).filter( last_played = session.query(Playdates.lastplayed).filter(
(Playdates.track_id == track.id) (Playdates.track_id == track_id)
).order_by(Playdates.lastplayed.desc()).first() ).order_by(Playdates.lastplayed.desc()).first()
if last_played:
return last_played[0]
else:
return None
class Playlists(Base): class Playlists(Base):

View File

@ -260,12 +260,8 @@ class PlaylistTab(QTableWidget):
self.setItem(row, self.COL_ARTIST, item) self.setItem(row, self.COL_ARTIST, item)
item = QTableWidgetItem(helpers.ms_to_mmss(track.duration)) item = QTableWidgetItem(helpers.ms_to_mmss(track.duration))
self.setItem(row, self.COL_DURATION, item) self.setItem(row, self.COL_DURATION, item)
last_playdate = Playdates.last_played(session, track) last_playtime = Playdates.last_played(session, track.id)
if last_playdate: last_played_str = get_relative_date(last_playtime)
playdate_date = last_playdate.lastplayed.date()
last_played_str = get_relative_date(playdate_date)
else:
last_played_str = "Never"
item = QTableWidgetItem(last_played_str) item = QTableWidgetItem(last_played_str)
self.setItem(row, self.COL_LAST_PLAYED, item) self.setItem(row, self.COL_LAST_PLAYED, item)
# Add empty start time for now as background # Add empty start time for now as background
@ -907,7 +903,14 @@ Track ID: {track.id}
colour = QColor(Config.COLOUR_EVEN_PLAYLIST) colour = QColor(Config.COLOUR_EVEN_PLAYLIST)
self._set_row_colour(row, colour) self._set_row_colour(row, colour)
if self._get_row_id(row) in self.played_tracks: track_id = self._get_row_id(row)
if track_id in self.played_tracks:
# Played today, so update last played column
last_playtime = Playdates.last_played(
session, track_id)
last_played_str = get_relative_date(last_playtime)
self.item(row, self.COL_LAST_PLAYED).setText(
last_played_str)
self._set_row_not_bold(row) self._set_row_not_bold(row)
else: else:
# Set start/end times only if we haven't played it yet # Set start/end times only if we haven't played it yet