From a6a0b905d872ebcfc48c4f3ff5bfff39ced8d40c Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Fri, 6 Aug 2021 10:23:30 +0100 Subject: [PATCH] Put "last played" in place of "path" in playlist --- app/helpers.py | 23 +++++++++++++++++++++++ app/playlists.py | 21 +++++++++++++++------ 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/app/helpers.py b/app/helpers.py index 9280648..d2e85b5 100644 --- a/app/helpers.py +++ b/app/helpers.py @@ -1,3 +1,26 @@ +from datetime import datetime, date + + +def get_relative_date(past_date, reference_date=None): + """ + Return relative date as string. + """ + + if not reference_date: + reference_date = datetime.now().date() + + # 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) + return f"{weeks} weeks, {days} days ago" + + def ms_to_mmss(ms, decimals=0, negative=False): if not ms: return "-" diff --git a/app/playlists.py b/app/playlists.py index 4d8e49d..7be5a04 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -16,8 +16,11 @@ import os from config import Config from datetime import datetime, timedelta +from helpers import get_relative_date from log import DEBUG, ERROR -from model import Notes, Playlists, PlaylistTracks, Session, Settings, Tracks +from model import ( + Notes, Playdates, Playlists, PlaylistTracks, Session, Settings, Tracks +) class PlaylistTab(QTableWidget): @@ -30,7 +33,7 @@ class PlaylistTab(QTableWidget): COL_DURATION = 4 COL_START_TIME = 5 COL_END_TIME = 6 - COL_PATH = 7 + COL_LAST_PLAYED = 7 NOTE_COL_SPAN = 4 NOTE_ROW_SPAN = 1 @@ -66,7 +69,7 @@ class PlaylistTab(QTableWidget): self._set_column_widths() self.setHorizontalHeaderLabels(["ID", "Lead", "Title", "Artist", - "Len", "Start", "End", "Path"]) + "Len", "Start", "End", "Last played"]) self.setDragEnabled(True) self.setAcceptDrops(True) @@ -209,7 +212,7 @@ class PlaylistTab(QTableWidget): item = QTableWidgetItem() self.setItem(row, self.COL_END_TIME, item) item = QTableWidgetItem() - self.setItem(row, self.COL_PATH, item) + self.setItem(row, self.COL_LAST_PLAYED, item) self._meta_set_note(row) @@ -255,8 +258,14 @@ 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) - item = QTableWidgetItem(track.path) - self.setItem(row, self.COL_PATH, 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" + item = QTableWidgetItem(last_played_str) + self.setItem(row, self.COL_LAST_PLAYED, item) # Add empty start time for now as background # colour won't be set for columns without items item = QTableWidgetItem()