Code cleanups

This commit is contained in:
Keith Edmunds 2022-02-25 17:16:21 +00:00
parent 7f2dd68bce
commit 3a7b09f025
3 changed files with 29 additions and 10 deletions

View File

@ -39,6 +39,8 @@ from log import DEBUG, ERROR
# Create session at the global level as per
# https://docs.sqlalchemy.org/en/13/orm/session_basics.html
# and make objects persistent
# https://docs.sqlalchemy.org/en/14/orm/session_state_management.html
engine = sqlalchemy.create_engine(
f"{Config.MYSQL_CONNECT}?charset=utf8",
@ -46,7 +48,8 @@ engine = sqlalchemy.create_engine(
echo=Config.DISPLAY_SQL,
pool_pre_ping=True)
Session = scoped_session(sessionmaker(bind=engine))
sm = sessionmaker(bind=engine)
Session = scoped_session(sm)
Base: DeclarativeMeta = declarative_base()
Base.metadata.create_all(engine)
@ -135,7 +138,7 @@ class Notes(Base):
id = Column(Integer, primary_key=True, autoincrement=True)
playlist_id = Column(Integer, ForeignKey('playlists.id'))
playlist = relationship("Playlists", back_populates="notes",
lazy="joined")
lazy="joined")
row = Column(Integer, nullable=False)
note = Column(String(256), index=False)
@ -183,7 +186,7 @@ class Playdates(Base):
lastplayed = Column(DateTime, index=True, default=None)
track_id = Column(Integer, ForeignKey('tracks.id'))
tracks = relationship("Tracks", back_populates="playdates",
lazy="joined")
lazy="joined")
def __init__(self, session, track):
"""Record that track was played"""
@ -452,9 +455,9 @@ class Tracks(Base):
mtime = Column(Float, index=True)
lastplayed = Column(DateTime, index=True, default=None)
playlists = relationship("PlaylistTracks", back_populates="tracks",
lazy="joined")
lazy="joined")
playdates = relationship("Playdates", back_populates="tracks",
lazy="joined")
lazy="joined")
def __init__(self, session, path):
self.path = path

View File

@ -474,6 +474,9 @@ class Window(QMainWindow, Ui_MainWindow):
QColor(Config.COLOUR_CURRENT_TAB))
self.music.play(self.current_track.path)
# Tell playlist so it can update its display
self.current_track_playlist_tab.play_started()
# Tell database to record it as played
Playdates(session, self.current_track)

View File

@ -150,7 +150,7 @@ class PlaylistTab(QTableWidget):
def dropEvent(self, event: QDropEvent):
# if not event.isAccepted() and event.source() == self:
if not event.source() == self:
return # We don't accept external drops
return # We don't accept external drops
drop_row = self._drop_on(event)
@ -173,7 +173,7 @@ class PlaylistTab(QTableWidget):
event.accept()
# The above doesn't handle column spans, which we use in note
# rows. Check and fix:
row = 0 # So row is defined even if there are no rows in range
row = 0 # So row is defined even if there are no rows in range
for row in range(drop_row, drop_row + len(rows_to_move)):
if row in self._meta_get_notes():
self.setSpan(
@ -677,7 +677,7 @@ class PlaylistTab(QTableWidget):
else:
# No current track to base from, but don't change
# time if it's already set
start_time = self._get_row_time(row)
start_time = self._get_row_start_time(row)
if not start_time:
start_time = next_start_time
# Now set it
@ -879,8 +879,9 @@ class PlaylistTab(QTableWidget):
"""Return time specified at the end of text"""
try:
time_length = len(Config.NOTE_TIME_FORMAT)
return datetime.strptime(
text[-len(Config.NOTE_TIME_FORMAT):],
text[(--time_length):],
Config.NOTE_TIME_FORMAT
)
except ValueError:
@ -904,6 +905,18 @@ class PlaylistTab(QTableWidget):
obj = self.item(row, self.COL_USERDATA).data(self.CONTENT_OBJECT)
return obj
def _get_row_start_time(self, row):
try:
if self.item(row, self.COL_START_TIME):
return datetime.strptime(self.item(
row, self.COL_START_TIME).text(),
Config.NOTE_TIME_FORMAT
)
else:
return None
except ValueError:
return None
def _info_row(self, row):
"""Display popup with info re row"""
@ -1273,7 +1286,7 @@ class PlaylistTab(QTableWidget):
if self._track_is_readable(track):
self._meta_set_next(row)
self.parent.this_is_the_next_track(track)
self.parent.this_is_the_next_track(self, track)
else:
self._meta_set_unreadable(row)
track = None