Code cleanups
This commit is contained in:
parent
7f2dd68bce
commit
3a7b09f025
@ -39,6 +39,8 @@ from log import DEBUG, ERROR
|
|||||||
|
|
||||||
# Create session at the global level as per
|
# Create session at the global level as per
|
||||||
# https://docs.sqlalchemy.org/en/13/orm/session_basics.html
|
# 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(
|
engine = sqlalchemy.create_engine(
|
||||||
f"{Config.MYSQL_CONNECT}?charset=utf8",
|
f"{Config.MYSQL_CONNECT}?charset=utf8",
|
||||||
@ -46,7 +48,8 @@ engine = sqlalchemy.create_engine(
|
|||||||
echo=Config.DISPLAY_SQL,
|
echo=Config.DISPLAY_SQL,
|
||||||
pool_pre_ping=True)
|
pool_pre_ping=True)
|
||||||
|
|
||||||
Session = scoped_session(sessionmaker(bind=engine))
|
sm = sessionmaker(bind=engine)
|
||||||
|
Session = scoped_session(sm)
|
||||||
|
|
||||||
Base: DeclarativeMeta = declarative_base()
|
Base: DeclarativeMeta = declarative_base()
|
||||||
Base.metadata.create_all(engine)
|
Base.metadata.create_all(engine)
|
||||||
@ -135,7 +138,7 @@ class Notes(Base):
|
|||||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
playlist_id = Column(Integer, ForeignKey('playlists.id'))
|
playlist_id = Column(Integer, ForeignKey('playlists.id'))
|
||||||
playlist = relationship("Playlists", back_populates="notes",
|
playlist = relationship("Playlists", back_populates="notes",
|
||||||
lazy="joined")
|
lazy="joined")
|
||||||
row = Column(Integer, nullable=False)
|
row = Column(Integer, nullable=False)
|
||||||
note = Column(String(256), index=False)
|
note = Column(String(256), index=False)
|
||||||
|
|
||||||
@ -183,7 +186,7 @@ class Playdates(Base):
|
|||||||
lastplayed = Column(DateTime, index=True, default=None)
|
lastplayed = Column(DateTime, index=True, default=None)
|
||||||
track_id = Column(Integer, ForeignKey('tracks.id'))
|
track_id = Column(Integer, ForeignKey('tracks.id'))
|
||||||
tracks = relationship("Tracks", back_populates="playdates",
|
tracks = relationship("Tracks", back_populates="playdates",
|
||||||
lazy="joined")
|
lazy="joined")
|
||||||
|
|
||||||
def __init__(self, session, track):
|
def __init__(self, session, track):
|
||||||
"""Record that track was played"""
|
"""Record that track was played"""
|
||||||
@ -452,9 +455,9 @@ class Tracks(Base):
|
|||||||
mtime = Column(Float, index=True)
|
mtime = Column(Float, index=True)
|
||||||
lastplayed = Column(DateTime, index=True, default=None)
|
lastplayed = Column(DateTime, index=True, default=None)
|
||||||
playlists = relationship("PlaylistTracks", back_populates="tracks",
|
playlists = relationship("PlaylistTracks", back_populates="tracks",
|
||||||
lazy="joined")
|
lazy="joined")
|
||||||
playdates = relationship("Playdates", back_populates="tracks",
|
playdates = relationship("Playdates", back_populates="tracks",
|
||||||
lazy="joined")
|
lazy="joined")
|
||||||
|
|
||||||
def __init__(self, session, path):
|
def __init__(self, session, path):
|
||||||
self.path = path
|
self.path = path
|
||||||
|
|||||||
@ -474,6 +474,9 @@ class Window(QMainWindow, Ui_MainWindow):
|
|||||||
QColor(Config.COLOUR_CURRENT_TAB))
|
QColor(Config.COLOUR_CURRENT_TAB))
|
||||||
self.music.play(self.current_track.path)
|
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
|
# Tell database to record it as played
|
||||||
Playdates(session, self.current_track)
|
Playdates(session, self.current_track)
|
||||||
|
|
||||||
|
|||||||
@ -150,7 +150,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
def dropEvent(self, event: QDropEvent):
|
def dropEvent(self, event: QDropEvent):
|
||||||
# if not event.isAccepted() and event.source() == self:
|
# if not event.isAccepted() and event.source() == self:
|
||||||
if not 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)
|
drop_row = self._drop_on(event)
|
||||||
|
|
||||||
@ -173,7 +173,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
event.accept()
|
event.accept()
|
||||||
# The above doesn't handle column spans, which we use in note
|
# The above doesn't handle column spans, which we use in note
|
||||||
# rows. Check and fix:
|
# 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)):
|
for row in range(drop_row, drop_row + len(rows_to_move)):
|
||||||
if row in self._meta_get_notes():
|
if row in self._meta_get_notes():
|
||||||
self.setSpan(
|
self.setSpan(
|
||||||
@ -677,7 +677,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
else:
|
else:
|
||||||
# No current track to base from, but don't change
|
# No current track to base from, but don't change
|
||||||
# time if it's already set
|
# 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:
|
if not start_time:
|
||||||
start_time = next_start_time
|
start_time = next_start_time
|
||||||
# Now set it
|
# Now set it
|
||||||
@ -879,8 +879,9 @@ class PlaylistTab(QTableWidget):
|
|||||||
"""Return time specified at the end of text"""
|
"""Return time specified at the end of text"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
time_length = len(Config.NOTE_TIME_FORMAT)
|
||||||
return datetime.strptime(
|
return datetime.strptime(
|
||||||
text[-len(Config.NOTE_TIME_FORMAT):],
|
text[(--time_length):],
|
||||||
Config.NOTE_TIME_FORMAT
|
Config.NOTE_TIME_FORMAT
|
||||||
)
|
)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
@ -904,6 +905,18 @@ class PlaylistTab(QTableWidget):
|
|||||||
obj = self.item(row, self.COL_USERDATA).data(self.CONTENT_OBJECT)
|
obj = self.item(row, self.COL_USERDATA).data(self.CONTENT_OBJECT)
|
||||||
return obj
|
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):
|
def _info_row(self, row):
|
||||||
"""Display popup with info re row"""
|
"""Display popup with info re row"""
|
||||||
|
|
||||||
@ -1273,7 +1286,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
|
|
||||||
if self._track_is_readable(track):
|
if self._track_is_readable(track):
|
||||||
self._meta_set_next(row)
|
self._meta_set_next(row)
|
||||||
self.parent.this_is_the_next_track(track)
|
self.parent.this_is_the_next_track(self, track)
|
||||||
else:
|
else:
|
||||||
self._meta_set_unreadable(row)
|
self._meta_set_unreadable(row)
|
||||||
track = None
|
track = None
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user