diff --git a/app/model.py b/app/model.py index 7ad0042..5fca282 100644 --- a/app/model.py +++ b/app/model.py @@ -2,7 +2,7 @@ import sqlalchemy -from datetime import datetime +from datetime import datetime, time from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import ( Boolean, @@ -130,6 +130,24 @@ class Playdates(Base): ).delete() session.commit() + @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): """ diff --git a/app/playlists.py b/app/playlists.py index 5ac8943..3173bb1 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -530,6 +530,11 @@ class PlaylistTab(QTableWidget): duration = Tracks.get_duration(session, self._get_row_id(row)) return start + timedelta(milliseconds=duration) + def _can_read_track(self, track): + "Check track file is readable" + + return os.access(track.path, os.R_OK) + def _context_menu(self, pos): self.menu.exec_(self.mapToGlobal(pos))