parent
4687ef5288
commit
0e4de857d4
@ -6,20 +6,19 @@ def get_relative_date(past_date, reference_date=None):
|
||||
Return relative date as string.
|
||||
"""
|
||||
|
||||
if not past_date:
|
||||
return "Never"
|
||||
if not reference_date:
|
||||
reference_date = datetime.now().date()
|
||||
reference_date = datetime.now()
|
||||
|
||||
# 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:
|
||||
return "get_relative_date() past_date is after relative_date"
|
||||
|
||||
weeks, days = divmod((reference_date - past_date).days, 7)
|
||||
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"
|
||||
|
||||
|
||||
|
||||
10
app/model.py
10
app/model.py
@ -108,12 +108,16 @@ class Playdates(Base):
|
||||
session.commit()
|
||||
|
||||
@staticmethod
|
||||
def last_played(session, track):
|
||||
def last_played(session, track_id):
|
||||
"Return datetime track last played or None"
|
||||
|
||||
return session.query(Playdates).filter(
|
||||
(Playdates.track_id == track.id)
|
||||
last_played = session.query(Playdates.lastplayed).filter(
|
||||
(Playdates.track_id == track_id)
|
||||
).order_by(Playdates.lastplayed.desc()).first()
|
||||
if last_played:
|
||||
return last_played[0]
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
class Playlists(Base):
|
||||
|
||||
@ -260,12 +260,8 @@ class PlaylistTab(QTableWidget):
|
||||
self.setItem(row, self.COL_ARTIST, item)
|
||||
item = QTableWidgetItem(helpers.ms_to_mmss(track.duration))
|
||||
self.setItem(row, self.COL_DURATION, item)
|
||||
last_playdate = Playdates.last_played(session, track)
|
||||
if last_playdate:
|
||||
playdate_date = last_playdate.lastplayed.date()
|
||||
last_played_str = get_relative_date(playdate_date)
|
||||
else:
|
||||
last_played_str = "Never"
|
||||
last_playtime = Playdates.last_played(session, track.id)
|
||||
last_played_str = get_relative_date(last_playtime)
|
||||
item = QTableWidgetItem(last_played_str)
|
||||
self.setItem(row, self.COL_LAST_PLAYED, item)
|
||||
# Add empty start time for now as background
|
||||
@ -907,7 +903,14 @@ Track ID: {track.id}
|
||||
colour = QColor(Config.COLOUR_EVEN_PLAYLIST)
|
||||
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)
|
||||
else:
|
||||
# Set start/end times only if we haven't played it yet
|
||||
|
||||
Loading…
Reference in New Issue
Block a user