WIP: rename repository.py → ds.py
This commit is contained in:
parent
9a6bb038e1
commit
38c49b32d7
@ -23,7 +23,7 @@ from helpers import (
|
|||||||
get_relative_date,
|
get_relative_date,
|
||||||
ms_to_mmss,
|
ms_to_mmss,
|
||||||
)
|
)
|
||||||
import repository
|
import ds
|
||||||
|
|
||||||
|
|
||||||
class TrackInsertDialog(QDialog):
|
class TrackInsertDialog(QDialog):
|
||||||
@ -94,8 +94,8 @@ class TrackInsertDialog(QDialog):
|
|||||||
self.setLayout(layout)
|
self.setLayout(layout)
|
||||||
self.resize(800, 600)
|
self.resize(800, 600)
|
||||||
|
|
||||||
width = repository.get_setting("dbdialog_width") or 800
|
width = ds.get_setting("dbdialog_width") or 800
|
||||||
height = repository.get_setting("dbdialog_height") or 800
|
height = ds.get_setting("dbdialog_height") or 800
|
||||||
self.resize(width, height)
|
self.resize(width, height)
|
||||||
|
|
||||||
self.signals = MusicMusterSignals()
|
self.signals = MusicMusterSignals()
|
||||||
@ -107,9 +107,9 @@ class TrackInsertDialog(QDialog):
|
|||||||
return
|
return
|
||||||
|
|
||||||
if text.startswith("a/") and len(text) > 2:
|
if text.startswith("a/") and len(text) > 2:
|
||||||
self.tracks = repository.tracks_by_artist(text[2:])
|
self.tracks = ds.tracks_by_artist(text[2:])
|
||||||
else:
|
else:
|
||||||
self.tracks = repository.tracks_by_title(text)
|
self.tracks = ds.tracks_by_title(text)
|
||||||
|
|
||||||
for track in self.tracks:
|
for track in self.tracks:
|
||||||
duration_str = ms_to_mmss(track.duration)
|
duration_str = ms_to_mmss(track.duration)
|
||||||
|
|||||||
@ -45,7 +45,7 @@ from helpers import (
|
|||||||
from log import log
|
from log import log
|
||||||
from playlistrow import TrackSequence
|
from playlistrow import TrackSequence
|
||||||
from playlistmodel import PlaylistModel
|
from playlistmodel import PlaylistModel
|
||||||
import repository
|
import ds
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -142,7 +142,7 @@ class FileImporter:
|
|||||||
|
|
||||||
# Refresh list of existing tracks as they may have been updated
|
# Refresh list of existing tracks as they may have been updated
|
||||||
# by previous imports
|
# by previous imports
|
||||||
self.existing_tracks = repository.get_all_tracks()
|
self.existing_tracks = ds.get_all_tracks()
|
||||||
|
|
||||||
for infile in [
|
for infile in [
|
||||||
os.path.join(Config.REPLACE_FILES_DEFAULT_SOURCE, f)
|
os.path.join(Config.REPLACE_FILES_DEFAULT_SOURCE, f)
|
||||||
@ -465,7 +465,7 @@ class FileImporter:
|
|||||||
# file). Check that because the path field in the database is
|
# file). Check that because the path field in the database is
|
||||||
# unique and so adding a duplicate will give a db integrity
|
# unique and so adding a duplicate will give a db integrity
|
||||||
# error.
|
# error.
|
||||||
if repository.track_by_path(tfd.destination_path):
|
if ds.track_by_path(tfd.destination_path):
|
||||||
tfd.error = (
|
tfd.error = (
|
||||||
"Importing a new track but destination path already exists "
|
"Importing a new track but destination path already exists "
|
||||||
f"in database ({tfd.destination_path})"
|
f"in database ({tfd.destination_path})"
|
||||||
@ -638,9 +638,9 @@ class DoTrackImport(QThread):
|
|||||||
# Update databse
|
# Update databse
|
||||||
metadata = get_all_track_metadata(self.destination_track_path)
|
metadata = get_all_track_metadata(self.destination_track_path)
|
||||||
if self.track_id == 0:
|
if self.track_id == 0:
|
||||||
track_dto = repository.create_track(self.destination_track_path, metadata)
|
track_dto = ds.create_track(self.destination_track_path, metadata)
|
||||||
else:
|
else:
|
||||||
track_dto = repository.update_track(
|
track_dto = ds.update_track(
|
||||||
self.destination_track_path, self.track_id, metadata
|
self.destination_track_path, self.track_id, metadata
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -79,7 +79,7 @@ from models import db, Playdates, PlaylistRows, Playlists, Queries, Settings, Tr
|
|||||||
from playlistrow import PlaylistRow, TrackSequence
|
from playlistrow import PlaylistRow, TrackSequence
|
||||||
from playlistmodel import PlaylistModel, PlaylistProxyModel
|
from playlistmodel import PlaylistModel, PlaylistProxyModel
|
||||||
from playlists import PlaylistTab
|
from playlists import PlaylistTab
|
||||||
import repository
|
import ds
|
||||||
from querylistmodel import QuerylistModel
|
from querylistmodel import QuerylistModel
|
||||||
from ui import icons_rc # noqa F401
|
from ui import icons_rc # noqa F401
|
||||||
from ui.dlg_SelectPlaylist_ui import Ui_dlgSelectPlaylist # type: ignore
|
from ui.dlg_SelectPlaylist_ui import Ui_dlgSelectPlaylist # type: ignore
|
||||||
@ -472,7 +472,7 @@ class ManageQueries(ItemlistManager):
|
|||||||
# Build a list of queries
|
# Build a list of queries
|
||||||
query_list: list[ItemlistItem] = []
|
query_list: list[ItemlistItem] = []
|
||||||
|
|
||||||
for query in repository.get_all_queries():
|
for query in ds.get_all_queries():
|
||||||
query_list.append(
|
query_list.append(
|
||||||
ItemlistItem(
|
ItemlistItem(
|
||||||
name=query.name, id=query.query_id, favourite=query.favourite
|
name=query.name, id=query.query_id, favourite=query.favourite
|
||||||
@ -485,7 +485,7 @@ class ManageQueries(ItemlistManager):
|
|||||||
def delete_item(self, query_id: int) -> None:
|
def delete_item(self, query_id: int) -> None:
|
||||||
"""delete query"""
|
"""delete query"""
|
||||||
|
|
||||||
query = repository.query_by_id(query_id)
|
query = ds.query_by_id(query_id)
|
||||||
if not query:
|
if not query:
|
||||||
raise ApplicationError(
|
raise ApplicationError(
|
||||||
f"manage_template.delete({query_id=}) can't load query"
|
f"manage_template.delete({query_id=}) can't load query"
|
||||||
@ -494,7 +494,7 @@ class ManageQueries(ItemlistManager):
|
|||||||
"Delete query",
|
"Delete query",
|
||||||
f"Delete query '{query.name}': " "Are you sure?",
|
f"Delete query '{query.name}': " "Are you sure?",
|
||||||
):
|
):
|
||||||
repository.delete_query(query_id)
|
ds.delete_query(query_id)
|
||||||
|
|
||||||
self.refresh_table()
|
self.refresh_table()
|
||||||
|
|
||||||
@ -503,13 +503,13 @@ class ManageQueries(ItemlistManager):
|
|||||||
|
|
||||||
dlg = FilterDialog(query.name, query.filter)
|
dlg = FilterDialog(query.name, query.filter)
|
||||||
if dlg.exec():
|
if dlg.exec():
|
||||||
repository.update_query_filter(query.query_id, dlg.filter)
|
ds.update_query_filter(query.query_id, dlg.filter)
|
||||||
repository.update_query_name(query.query_id, dlg.name_text.text())
|
ds.update_query_name(query.query_id, dlg.name_text.text())
|
||||||
|
|
||||||
def edit_item(self, query_id: int) -> None:
|
def edit_item(self, query_id: int) -> None:
|
||||||
"""Edit query"""
|
"""Edit query"""
|
||||||
|
|
||||||
query = repository.query_by_id(query_id)
|
query = ds.query_by_id(query_id)
|
||||||
if not query:
|
if not query:
|
||||||
raise ApplicationError(
|
raise ApplicationError(
|
||||||
f"manage_template.edit_item({query_id=}) can't load query"
|
f"manage_template.edit_item({query_id=}) can't load query"
|
||||||
@ -519,7 +519,7 @@ class ManageQueries(ItemlistManager):
|
|||||||
def toggle_favourite(self, query_id: int, favourite: bool) -> None:
|
def toggle_favourite(self, query_id: int, favourite: bool) -> None:
|
||||||
"""Mark query as (not) favourite"""
|
"""Mark query as (not) favourite"""
|
||||||
|
|
||||||
repository.update_query_favourite(query_id, favourite)
|
ds.update_query_favourite(query_id, favourite)
|
||||||
|
|
||||||
def new_item(self) -> None:
|
def new_item(self) -> None:
|
||||||
"""Create new query"""
|
"""Create new query"""
|
||||||
@ -528,21 +528,21 @@ class ManageQueries(ItemlistManager):
|
|||||||
if not query_name:
|
if not query_name:
|
||||||
return
|
return
|
||||||
|
|
||||||
query = repository.create_query(query_name, Filter())
|
query = ds.create_query(query_name, Filter())
|
||||||
self._edit_item(query)
|
self._edit_item(query)
|
||||||
self.refresh_table()
|
self.refresh_table()
|
||||||
|
|
||||||
def rename_item(self, query_id: int) -> None:
|
def rename_item(self, query_id: int) -> None:
|
||||||
"""rename query"""
|
"""rename query"""
|
||||||
|
|
||||||
query = repository.query_by_id(query_id)
|
query = ds.query_by_id(query_id)
|
||||||
if not query:
|
if not query:
|
||||||
raise ApplicationError(f"Can't load query ({query_id=})")
|
raise ApplicationError(f"Can't load query ({query_id=})")
|
||||||
new_name = get_name(prompt="New query name", default=query.name)
|
new_name = get_name(prompt="New query name", default=query.name)
|
||||||
if not new_name:
|
if not new_name:
|
||||||
return
|
return
|
||||||
|
|
||||||
repository.update_query_name(query_id, new_name)
|
ds.update_query_name(query_id, new_name)
|
||||||
|
|
||||||
self.change_text(query_id, new_name)
|
self.change_text(query_id, new_name)
|
||||||
|
|
||||||
@ -567,7 +567,7 @@ class ManageTemplates(ItemlistManager):
|
|||||||
# Build a list of templates
|
# Build a list of templates
|
||||||
template_list: list[ItemlistItem] = []
|
template_list: list[ItemlistItem] = []
|
||||||
|
|
||||||
for template in repository.playlists_templates():
|
for template in ds.playlists_templates():
|
||||||
template_list.append(
|
template_list.append(
|
||||||
ItemlistItem(
|
ItemlistItem(
|
||||||
name=template.name,
|
name=template.name,
|
||||||
@ -582,7 +582,7 @@ class ManageTemplates(ItemlistManager):
|
|||||||
def delete_item(self, template_id: int) -> None:
|
def delete_item(self, template_id: int) -> None:
|
||||||
"""delete template"""
|
"""delete template"""
|
||||||
|
|
||||||
template = repository.playlists_template_by_id(template_id)
|
template = ds.playlists_template_by_id(template_id)
|
||||||
if not template:
|
if not template:
|
||||||
raise ApplicationError(
|
raise ApplicationError(
|
||||||
f"manage_template.delete({template_id=}) can't load template"
|
f"manage_template.delete({template_id=}) can't load template"
|
||||||
@ -602,12 +602,12 @@ class ManageTemplates(ItemlistManager):
|
|||||||
else:
|
else:
|
||||||
self.musicmuster.playlist_section.tabPlaylist.removeTab(open_idx)
|
self.musicmuster.playlist_section.tabPlaylist.removeTab(open_idx)
|
||||||
|
|
||||||
repository.delete_playlist(template.playlist_id)
|
ds.delete_playlist(template.playlist_id)
|
||||||
|
|
||||||
def edit_item(self, template_id: int) -> None:
|
def edit_item(self, template_id: int) -> None:
|
||||||
"""Edit template"""
|
"""Edit template"""
|
||||||
|
|
||||||
template = repository.playlists_template_by_id(template_id)
|
template = ds.playlists_template_by_id(template_id)
|
||||||
if not template:
|
if not template:
|
||||||
raise ApplicationError(
|
raise ApplicationError(
|
||||||
f"manage_template.edit({template_id=}) can't load template"
|
f"manage_template.edit({template_id=}) can't load template"
|
||||||
@ -619,7 +619,7 @@ class ManageTemplates(ItemlistManager):
|
|||||||
def toggle_favourite(self, template_id: int, favourite: bool) -> None:
|
def toggle_favourite(self, template_id: int, favourite: bool) -> None:
|
||||||
"""Mark template as (not) favourite"""
|
"""Mark template as (not) favourite"""
|
||||||
|
|
||||||
repository.update_template_favourite(template_id, favourite)
|
ds.update_template_favourite(template_id, favourite)
|
||||||
|
|
||||||
def new_item(
|
def new_item(
|
||||||
self,
|
self,
|
||||||
@ -639,7 +639,7 @@ class ManageTemplates(ItemlistManager):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Create playlist for template and mark is as a template
|
# Create playlist for template and mark is as a template
|
||||||
template = repository.create_playlist(name, template_id, as_template=True)
|
template = ds.create_playlist(name, template_id, as_template=True)
|
||||||
|
|
||||||
# Open it for editing
|
# Open it for editing
|
||||||
self.musicmuster._open_playlist(template, is_template=True)
|
self.musicmuster._open_playlist(template, is_template=True)
|
||||||
@ -647,14 +647,14 @@ class ManageTemplates(ItemlistManager):
|
|||||||
def rename_item(self, template_id: int) -> None:
|
def rename_item(self, template_id: int) -> None:
|
||||||
"""rename template"""
|
"""rename template"""
|
||||||
|
|
||||||
template = repository.playlist_by_id(template_id)
|
template = ds.playlist_by_id(template_id)
|
||||||
if not template:
|
if not template:
|
||||||
raise ApplicationError(
|
raise ApplicationError(
|
||||||
f"manage_template.delete({template_id=}) can't load template"
|
f"manage_template.delete({template_id=}) can't load template"
|
||||||
)
|
)
|
||||||
new_name = self.musicmuster.get_playlist_name(template.name)
|
new_name = self.musicmuster.get_playlist_name(template.name)
|
||||||
if new_name:
|
if new_name:
|
||||||
repository.playlist_rename(template_id, new_name)
|
ds.playlist_rename(template_id, new_name)
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -780,7 +780,7 @@ class QueryDialog(QDialog):
|
|||||||
|
|
||||||
self.query_list: list[tuple[str, int]] = []
|
self.query_list: list[tuple[str, int]] = []
|
||||||
self.query_list.append((Config.NO_QUERY_NAME, 0))
|
self.query_list.append((Config.NO_QUERY_NAME, 0))
|
||||||
for query in repository.get_all_queries():
|
for query in ds.get_all_queries():
|
||||||
self.query_list.append((query.name, query.query_id))
|
self.query_list.append((query.name, query.query_id))
|
||||||
|
|
||||||
self.setWindowTitle("Query Selector")
|
self.setWindowTitle("Query Selector")
|
||||||
@ -898,7 +898,7 @@ class QueryDialog(QDialog):
|
|||||||
querylist_y=self.y(),
|
querylist_y=self.y(),
|
||||||
)
|
)
|
||||||
for name, value in attributes_to_save.items():
|
for name, value in attributes_to_save.items():
|
||||||
repository.set_setting(name, value)
|
ds.set_setting(name, value)
|
||||||
|
|
||||||
header = self.table_view.horizontalHeader()
|
header = self.table_view.horizontalHeader()
|
||||||
if header is None:
|
if header is None:
|
||||||
@ -908,7 +908,7 @@ class QueryDialog(QDialog):
|
|||||||
return
|
return
|
||||||
for column_number in range(column_count - 1):
|
for column_number in range(column_count - 1):
|
||||||
attr_name = f"querylist_col_{column_number}_width"
|
attr_name = f"querylist_col_{column_number}_width"
|
||||||
repository.set_setting(
|
ds.set_setting(
|
||||||
attr_name, self.table_view.columnWidth(column_number)
|
attr_name, self.table_view.columnWidth(column_number)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -939,7 +939,7 @@ class QueryDialog(QDialog):
|
|||||||
|
|
||||||
# Get query
|
# Get query
|
||||||
query_id = self.combo_box.currentData()
|
query_id = self.combo_box.currentData()
|
||||||
query = repository.query_by_id(query_id)
|
query = ds.query_by_id(query_id)
|
||||||
if not query:
|
if not query:
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -961,10 +961,10 @@ class QueryDialog(QDialog):
|
|||||||
def set_window_size(self) -> None:
|
def set_window_size(self) -> None:
|
||||||
"""Set window sizes"""
|
"""Set window sizes"""
|
||||||
|
|
||||||
x = repository.get_setting("querylist_x") or 100
|
x = ds.get_setting("querylist_x") or 100
|
||||||
y = repository.get_setting("querylist_y") or 100
|
y = ds.get_setting("querylist_y") or 100
|
||||||
width = repository.get_setting("querylist_width") or 100
|
width = ds.get_setting("querylist_width") or 100
|
||||||
height = repository.get_setting("querylist_height") or 100
|
height = ds.get_setting("querylist_height") or 100
|
||||||
self.setGeometry(x, y, width, height)
|
self.setGeometry(x, y, width, height)
|
||||||
|
|
||||||
def set_column_sizes(self) -> None:
|
def set_column_sizes(self) -> None:
|
||||||
@ -980,7 +980,7 @@ class QueryDialog(QDialog):
|
|||||||
# Last column is set to stretch so ignore it here
|
# Last column is set to stretch so ignore it here
|
||||||
for column_number in range(column_count - 1):
|
for column_number in range(column_count - 1):
|
||||||
attr_name = f"querylist_col_{column_number}_width"
|
attr_name = f"querylist_col_{column_number}_width"
|
||||||
width = repository.get_setting(attr_name) or Config.DEFAULT_COLUMN_WIDTH
|
width = ds.get_setting(attr_name) or Config.DEFAULT_COLUMN_WIDTH
|
||||||
self.table_view.setColumnWidth(column_number, width)
|
self.table_view.setColumnWidth(column_number, width)
|
||||||
|
|
||||||
|
|
||||||
@ -997,8 +997,8 @@ class SelectPlaylistDialog(QDialog):
|
|||||||
self.ui.buttonBox.rejected.connect(self.close)
|
self.ui.buttonBox.rejected.connect(self.close)
|
||||||
self.playlist = None
|
self.playlist = None
|
||||||
|
|
||||||
width = repository.get_setting("select_playlist_dialog_width") or 800
|
width = ds.get_setting("select_playlist_dialog_width") or 800
|
||||||
height = repository.get_setting("select_playlist_dialog_height") or 800
|
height = ds.get_setting("select_playlist_dialog_height") or 800
|
||||||
self.resize(width, height)
|
self.resize(width, height)
|
||||||
|
|
||||||
for playlist in playlists:
|
for playlist in playlists:
|
||||||
@ -1008,8 +1008,8 @@ class SelectPlaylistDialog(QDialog):
|
|||||||
self.ui.lstPlaylists.addItem(p)
|
self.ui.lstPlaylists.addItem(p)
|
||||||
|
|
||||||
def __del__(self): # review
|
def __del__(self): # review
|
||||||
repository.set_setting("select_playlist_dialog_height", self.height())
|
ds.set_setting("select_playlist_dialog_height", self.height())
|
||||||
repository.set_setting("select_playlist_dialog_width", self.width())
|
ds.set_setting("select_playlist_dialog_width", self.width())
|
||||||
|
|
||||||
def list_doubleclick(self, entry): # review
|
def list_doubleclick(self, entry): # review
|
||||||
self.playlist = entry.data(Qt.ItemDataRole.UserRole)
|
self.playlist = entry.data(Qt.ItemDataRole.UserRole)
|
||||||
@ -1195,7 +1195,7 @@ class Window(QMainWindow):
|
|||||||
playlist_id_to_tab[
|
playlist_id_to_tab[
|
||||||
self.playlist_section.tabPlaylist.widget(idx).playlist_id
|
self.playlist_section.tabPlaylist.widget(idx).playlist_id
|
||||||
] = idx
|
] = idx
|
||||||
repository.playlist_save_tabs(playlist_id_to_tab)
|
ds.playlist_save_tabs(playlist_id_to_tab)
|
||||||
|
|
||||||
# Save window attributes
|
# Save window attributes
|
||||||
attributes_to_save = dict(
|
attributes_to_save = dict(
|
||||||
@ -1206,7 +1206,7 @@ class Window(QMainWindow):
|
|||||||
active_tab=self.playlist_section.tabPlaylist.currentIndex(),
|
active_tab=self.playlist_section.tabPlaylist.currentIndex(),
|
||||||
)
|
)
|
||||||
for name, value in attributes_to_save.items():
|
for name, value in attributes_to_save.items():
|
||||||
repository.set_setting(name, value)
|
ds.set_setting(name, value)
|
||||||
|
|
||||||
event.accept()
|
event.accept()
|
||||||
|
|
||||||
@ -1324,7 +1324,7 @@ class Window(QMainWindow):
|
|||||||
"separator": True,
|
"separator": True,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
templates = repository.playlists_templates()
|
templates = ds.playlists_templates()
|
||||||
for template in templates:
|
for template in templates:
|
||||||
submenu_items.append(
|
submenu_items.append(
|
||||||
{
|
{
|
||||||
@ -1357,7 +1357,7 @@ class Window(QMainWindow):
|
|||||||
"separator": True,
|
"separator": True,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
queries = repository.get_all_queries(favourites_only=True)
|
queries = ds.get_all_queries(favourites_only=True)
|
||||||
for query in queries:
|
for query in queries:
|
||||||
submenu_items.append(
|
submenu_items.append(
|
||||||
{
|
{
|
||||||
@ -1409,7 +1409,7 @@ class Window(QMainWindow):
|
|||||||
if template_id > 0, and return the Playlists object.
|
if template_id > 0, and return the Playlists object.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return repository.create_playlist(name, template_id)
|
return ds.create_playlist(name, template_id)
|
||||||
|
|
||||||
@log_call
|
@log_call
|
||||||
def _open_playlist(self, playlist: Playlists, is_template: bool = False) -> int:
|
def _open_playlist(self, playlist: Playlists, is_template: bool = False) -> int:
|
||||||
@ -1432,7 +1432,7 @@ class Window(QMainWindow):
|
|||||||
idx = self.playlist_section.tabPlaylist.addTab(playlist_tab, playlist.name)
|
idx = self.playlist_section.tabPlaylist.addTab(playlist_tab, playlist.name)
|
||||||
|
|
||||||
# Mark playlist as open
|
# Mark playlist as open
|
||||||
repository.playlist_mark_status(playlist.playlist_id, open=True)
|
ds.playlist_mark_status(playlist.playlist_id, open=True)
|
||||||
|
|
||||||
# Switch to new tab
|
# Switch to new tab
|
||||||
self.playlist_section.tabPlaylist.setCurrentIndex(idx)
|
self.playlist_section.tabPlaylist.setCurrentIndex(idx)
|
||||||
@ -1458,7 +1458,7 @@ class Window(QMainWindow):
|
|||||||
if not playlist_name:
|
if not playlist_name:
|
||||||
return
|
return
|
||||||
|
|
||||||
_ = repository.create_playlist(playlist_name, template_id)
|
_ = ds.create_playlist(playlist_name, template_id)
|
||||||
|
|
||||||
@log_call
|
@log_call
|
||||||
def delete_playlist(self, checked: bool = False) -> None:
|
def delete_playlist(self, checked: bool = False) -> None:
|
||||||
@ -1467,21 +1467,21 @@ class Window(QMainWindow):
|
|||||||
but unused.
|
but unused.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
playlist = repository.playlist_by_id(self.current.playlist_id)
|
playlist = ds.playlist_by_id(self.current.playlist_id)
|
||||||
if playlist:
|
if playlist:
|
||||||
if helpers.ask_yes_no(
|
if helpers.ask_yes_no(
|
||||||
"Delete playlist",
|
"Delete playlist",
|
||||||
f"Delete playlist '{playlist.name}': " "Are you sure?",
|
f"Delete playlist '{playlist.name}': " "Are you sure?",
|
||||||
):
|
):
|
||||||
if self.close_playlist_tab():
|
if self.close_playlist_tab():
|
||||||
repository.delete_playlist(self.current.playlist_id)
|
ds.delete_playlist(self.current.playlist_id)
|
||||||
else:
|
else:
|
||||||
log.error("Failed to retrieve playlist")
|
log.error("Failed to retrieve playlist")
|
||||||
|
|
||||||
def open_existing_playlist(self, checked: bool = False) -> None:
|
def open_existing_playlist(self, checked: bool = False) -> None:
|
||||||
"""Open existing playlist"""
|
"""Open existing playlist"""
|
||||||
|
|
||||||
playlists = repository.playlists_closed()
|
playlists = ds.playlists_closed()
|
||||||
dlg = SelectPlaylistDialog(self, playlists=playlists)
|
dlg = SelectPlaylistDialog(self, playlists=playlists)
|
||||||
dlg.exec()
|
dlg.exec()
|
||||||
playlist = dlg.playlist
|
playlist = dlg.playlist
|
||||||
@ -1491,7 +1491,7 @@ class Window(QMainWindow):
|
|||||||
def save_as_template(self, checked: bool = False) -> None:
|
def save_as_template(self, checked: bool = False) -> None:
|
||||||
"""Save current playlist as template"""
|
"""Save current playlist as template"""
|
||||||
|
|
||||||
template_names = [a.name for a in repository.playlists_templates()]
|
template_names = [a.name for a in ds.playlists_templates()]
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
# Get name for new template
|
# Get name for new template
|
||||||
@ -1509,7 +1509,7 @@ class Window(QMainWindow):
|
|||||||
helpers.show_warning(
|
helpers.show_warning(
|
||||||
self, "Duplicate template", "Template name already in use"
|
self, "Duplicate template", "Template name already in use"
|
||||||
)
|
)
|
||||||
repository.save_as_template(self.current.playlist_id, template_name)
|
ds.save_as_template(self.current.playlist_id, template_name)
|
||||||
helpers.show_OK("Template", "Template saved", self)
|
helpers.show_OK("Template", "Template saved", self)
|
||||||
|
|
||||||
def get_playlist_name(
|
def get_playlist_name(
|
||||||
@ -1520,7 +1520,7 @@ class Window(QMainWindow):
|
|||||||
dlg = QInputDialog(self)
|
dlg = QInputDialog(self)
|
||||||
dlg.setInputMode(QInputDialog.InputMode.TextInput)
|
dlg.setInputMode(QInputDialog.InputMode.TextInput)
|
||||||
dlg.setLabelText(prompt)
|
dlg.setLabelText(prompt)
|
||||||
all_playlist_names = [a.name for a in repository.get_all_playlists()]
|
all_playlist_names = [a.name for a in ds.get_all_playlists()]
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
if default:
|
if default:
|
||||||
@ -1552,7 +1552,7 @@ class Window(QMainWindow):
|
|||||||
template_name_id_list: list[tuple[str, int]] = []
|
template_name_id_list: list[tuple[str, int]] = []
|
||||||
template_name_id_list.append((Config.NO_TEMPLATE_NAME, 0))
|
template_name_id_list.append((Config.NO_TEMPLATE_NAME, 0))
|
||||||
|
|
||||||
for template in repository.playlists_templates():
|
for template in ds.playlists_templates():
|
||||||
template_name_id_list.append((template.name, template.playlist_id))
|
template_name_id_list.append((template.name, template.playlist_id))
|
||||||
|
|
||||||
dlg = TemplateSelectorDialog(template_name_id_list, template_prompt)
|
dlg = TemplateSelectorDialog(template_name_id_list, template_prompt)
|
||||||
@ -1594,7 +1594,7 @@ class Window(QMainWindow):
|
|||||||
except subprocess.CalledProcessError as exc_info:
|
except subprocess.CalledProcessError as exc_info:
|
||||||
git_tag = str(exc_info.output)
|
git_tag = str(exc_info.output)
|
||||||
|
|
||||||
dbname = repository.get_db_name()
|
dbname = ds.get_db_name()
|
||||||
|
|
||||||
QMessageBox.information(
|
QMessageBox.information(
|
||||||
self,
|
self,
|
||||||
@ -1661,7 +1661,7 @@ class Window(QMainWindow):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
# Record playlist as closed
|
# Record playlist as closed
|
||||||
repository.playlist_mark_status(open=False)
|
ds.playlist_mark_status(open=False)
|
||||||
|
|
||||||
# Close playlist and remove tab
|
# Close playlist and remove tab
|
||||||
self.playlist_section.tabPlaylist.widget(tab_index).close()
|
self.playlist_section.tabPlaylist.widget(tab_index).close()
|
||||||
@ -1744,7 +1744,7 @@ class Window(QMainWindow):
|
|||||||
path += ".csv"
|
path += ".csv"
|
||||||
|
|
||||||
with open(path, "w") as f:
|
with open(path, "w") as f:
|
||||||
for playdate in repository.playdates_between_dates(start_dt):
|
for playdate in ds.playdates_between_dates(start_dt):
|
||||||
f.write(f"{playdate.artist},{playdate.title}\n")
|
f.write(f"{playdate.artist},{playdate.title}\n")
|
||||||
|
|
||||||
def drop3db(self) -> None:
|
def drop3db(self) -> None:
|
||||||
@ -1807,7 +1807,7 @@ class Window(QMainWindow):
|
|||||||
|
|
||||||
playlist_id = self.current.playlist_id
|
playlist_id = self.current.playlist_id
|
||||||
|
|
||||||
playlist = repository.playlist_by_id(playlist_id)
|
playlist = ds.playlist_by_id(playlist_id)
|
||||||
if not playlist:
|
if not playlist:
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -1828,7 +1828,7 @@ class Window(QMainWindow):
|
|||||||
with open(path, "w") as f:
|
with open(path, "w") as f:
|
||||||
# Required directive on first line
|
# Required directive on first line
|
||||||
f.write("#EXTM3U\n")
|
f.write("#EXTM3U\n")
|
||||||
for playlistrow in repository.get_playlist_rows(playlist_id):
|
for playlistrow in ds.get_playlist_rows(playlist_id):
|
||||||
if playlistrow.track:
|
if playlistrow.track:
|
||||||
f.write(
|
f.write(
|
||||||
"#EXTINF:"
|
"#EXTINF:"
|
||||||
@ -1909,13 +1909,13 @@ class Window(QMainWindow):
|
|||||||
"""Load the playlists that were open when app was last closed"""
|
"""Load the playlists that were open when app was last closed"""
|
||||||
|
|
||||||
playlist_ids = []
|
playlist_ids = []
|
||||||
for playlist in repository.playlists_open():
|
for playlist in ds.playlists_open():
|
||||||
if playlist:
|
if playlist:
|
||||||
# Create tab
|
# Create tab
|
||||||
playlist_ids.append(self._open_playlist(playlist))
|
playlist_ids.append(self._open_playlist(playlist))
|
||||||
|
|
||||||
# Set active tab
|
# Set active tab
|
||||||
value = repository.get_setting("active_tab")
|
value = ds.get_setting("active_tab")
|
||||||
if value is not None and value >= 0:
|
if value is not None and value >= 0:
|
||||||
self.playlist_section.tabPlaylist.setCurrentIndex(value)
|
self.playlist_section.tabPlaylist.setCurrentIndex(value)
|
||||||
|
|
||||||
@ -1965,7 +1965,7 @@ class Window(QMainWindow):
|
|||||||
playlists = []
|
playlists = []
|
||||||
source_playlist_id = self.current.playlist_id
|
source_playlist_id = self.current.playlist_id
|
||||||
|
|
||||||
for playlist in repository.get_all_playlists():
|
for playlist in ds.get_all_playlists():
|
||||||
if playlist.id == source_playlist_id:
|
if playlist.id == source_playlist_id:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
@ -1979,7 +1979,7 @@ class Window(QMainWindow):
|
|||||||
|
|
||||||
# Add to end of target playlist, so target row will be length of
|
# Add to end of target playlist, so target row will be length of
|
||||||
# playlist
|
# playlist
|
||||||
to_row = repository.playlist_row_count(to_playlist_id)
|
to_row = ds.playlist_row_count(to_playlist_id)
|
||||||
|
|
||||||
# Move rows
|
# Move rows
|
||||||
self.current.base_model.move_rows_between_playlists(
|
self.current.base_model.move_rows_between_playlists(
|
||||||
@ -2186,7 +2186,7 @@ class Window(QMainWindow):
|
|||||||
if not track_info:
|
if not track_info:
|
||||||
return
|
return
|
||||||
self.preview_manager.row_number = track_info.row_number
|
self.preview_manager.row_number = track_info.row_number
|
||||||
track = repository.track_by_id(track_info.track_id)
|
track = ds.track_by_id(track_info.track_id)
|
||||||
if not track:
|
if not track:
|
||||||
raise ApplicationError(
|
raise ApplicationError(
|
||||||
f"musicmuster.preview: unable to retreive track {track_info.track_id=}"
|
f"musicmuster.preview: unable to retreive track {track_info.track_id=}"
|
||||||
@ -2236,7 +2236,7 @@ class Window(QMainWindow):
|
|||||||
return
|
return
|
||||||
|
|
||||||
intro = round(self.preview_manager.get_playtime() / 100) * 100
|
intro = round(self.preview_manager.get_playtime() / 100) * 100
|
||||||
repository.set_track_intro(track_id, intro)
|
ds.set_track_intro(track_id, intro)
|
||||||
self.preview_manager.set_intro(intro)
|
self.preview_manager.set_intro(intro)
|
||||||
self.current.base_model.refresh_row(row_number)
|
self.current.base_model.refresh_row(row_number)
|
||||||
roles = [
|
roles = [
|
||||||
@ -2270,11 +2270,11 @@ class Window(QMainWindow):
|
|||||||
Rename current playlist. checked is passed by menu but not used here
|
Rename current playlist. checked is passed by menu but not used here
|
||||||
"""
|
"""
|
||||||
|
|
||||||
playlist = repository.playlist_by_id(self.current.playlist_id)
|
playlist = ds.playlist_by_id(self.current.playlist_id)
|
||||||
if playlist:
|
if playlist:
|
||||||
new_name = self.get_playlist_name(playlist.name)
|
new_name = self.get_playlist_name(playlist.name)
|
||||||
if new_name:
|
if new_name:
|
||||||
repository.playlist_rename(playlist.id, new_name)
|
ds.playlist_rename(playlist.id, new_name)
|
||||||
idx = self.tabBar.currentIndex()
|
idx = self.tabBar.currentIndex()
|
||||||
self.tabBar.setTabText(idx, new_name)
|
self.tabBar.setTabText(idx, new_name)
|
||||||
|
|
||||||
@ -2415,10 +2415,10 @@ class Window(QMainWindow):
|
|||||||
def set_main_window_size(self) -> None:
|
def set_main_window_size(self) -> None:
|
||||||
"""Set size of window from database"""
|
"""Set size of window from database"""
|
||||||
|
|
||||||
x = repository.get_setting("mainwindow_x") or 100
|
x = ds.get_setting("mainwindow_x") or 100
|
||||||
y = repository.get_setting("mainwindow_y") or 100
|
y = ds.get_setting("mainwindow_y") or 100
|
||||||
width = repository.get_setting("mainwindow_width") or 100
|
width = ds.get_setting("mainwindow_width") or 100
|
||||||
height = repository.get_setting("mainwindow_height") or 100
|
height = ds.get_setting("mainwindow_height") or 100
|
||||||
self.setGeometry(x, y, width, height)
|
self.setGeometry(x, y, width, height)
|
||||||
|
|
||||||
@log_call
|
@log_call
|
||||||
|
|||||||
@ -49,7 +49,7 @@ from helpers import (
|
|||||||
)
|
)
|
||||||
from log import log, log_call
|
from log import log, log_call
|
||||||
from playlistrow import PlaylistRow, TrackSequence
|
from playlistrow import PlaylistRow, TrackSequence
|
||||||
import repository
|
import ds
|
||||||
|
|
||||||
|
|
||||||
HEADER_NOTES_COLUMN = 1
|
HEADER_NOTES_COLUMN = 1
|
||||||
@ -102,7 +102,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
self.signals.signal_track_started.connect(self.track_started)
|
self.signals.signal_track_started.connect(self.track_started)
|
||||||
|
|
||||||
# Populate self.playlist_rows
|
# Populate self.playlist_rows
|
||||||
for dto in repository.get_playlist_rows(self.playlist_id):
|
for dto in ds.get_playlist_rows(self.playlist_id):
|
||||||
self.playlist_rows[dto.row_number] = PlaylistRow(dto)
|
self.playlist_rows[dto.row_number] = PlaylistRow(dto)
|
||||||
self.update_track_times()
|
self.update_track_times()
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
if self.is_header_row(row):
|
if self.is_header_row(row):
|
||||||
# Check for specific header colouring
|
# Check for specific header colouring
|
||||||
if plr.row_bg is None:
|
if plr.row_bg is None:
|
||||||
plr.row_bg = repository.get_colour(plr.note)
|
plr.row_bg = ds.get_colour(plr.note)
|
||||||
if plr.row_bg:
|
if plr.row_bg:
|
||||||
return QBrush(QColor(plr.row_bg))
|
return QBrush(QColor(plr.row_bg))
|
||||||
else:
|
else:
|
||||||
@ -235,7 +235,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
if column == Col.NOTE.value:
|
if column == Col.NOTE.value:
|
||||||
if plr.note:
|
if plr.note:
|
||||||
if plr.note_bg is None:
|
if plr.note_bg is None:
|
||||||
plr.row_bg = repository.get_colour(plr.note)
|
plr.row_bg = ds.get_colour(plr.note)
|
||||||
if plr.note_bg:
|
if plr.note_bg:
|
||||||
return QBrush(QColor(plr.note_bg))
|
return QBrush(QColor(plr.note_bg))
|
||||||
|
|
||||||
@ -296,7 +296,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
self.obs_scene_change(row_number)
|
self.obs_scene_change(row_number)
|
||||||
|
|
||||||
# Update Playdates in database
|
# Update Playdates in database
|
||||||
repository.update_playdates(track_id)
|
ds.update_playdates(track_id)
|
||||||
|
|
||||||
# Mark track as played in playlist
|
# Mark track as played in playlist
|
||||||
playlist_dto.played = True
|
playlist_dto.played = True
|
||||||
@ -397,7 +397,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
# Signal that rows will be removed
|
# Signal that rows will be removed
|
||||||
super().beginRemoveRows(QModelIndex(), min(row_group), max(row_group))
|
super().beginRemoveRows(QModelIndex(), min(row_group), max(row_group))
|
||||||
# Remove rows from data store
|
# Remove rows from data store
|
||||||
repository.remove_rows(self.playlist_id, row_group)
|
ds.remove_rows(self.playlist_id, row_group)
|
||||||
# Signal that data store has been updated
|
# Signal that data store has been updated
|
||||||
super().endRemoveRows()
|
super().endRemoveRows()
|
||||||
|
|
||||||
@ -502,7 +502,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
def _foreground_role(self, row: int, column: int, plr: PlaylistRow) -> QBrush:
|
def _foreground_role(self, row: int, column: int, plr: PlaylistRow) -> QBrush:
|
||||||
"""Return header foreground colour or QBrush() if none"""
|
"""Return header foreground colour or QBrush() if none"""
|
||||||
|
|
||||||
plr.row_fg = repository.get_colour(plr.note, foreground=True)
|
plr.row_fg = ds.get_colour(plr.note, foreground=True)
|
||||||
if plr.row_fg:
|
if plr.row_fg:
|
||||||
return QBrush(QColor(plr.row_fg))
|
return QBrush(QColor(plr.row_fg))
|
||||||
return QBrush()
|
return QBrush()
|
||||||
@ -713,7 +713,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
|
|
||||||
super().beginInsertRows(QModelIndex(), new_row_number, new_row_number)
|
super().beginInsertRows(QModelIndex(), new_row_number, new_row_number)
|
||||||
|
|
||||||
new_row = repository.insert_row(
|
new_row = ds.insert_row(
|
||||||
playlist_id=self.playlist_id,
|
playlist_id=self.playlist_id,
|
||||||
row_number=new_row_number,
|
row_number=new_row_number,
|
||||||
track_id=track_id,
|
track_id=track_id,
|
||||||
@ -843,7 +843,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
# Notify model going to change
|
# Notify model going to change
|
||||||
self.beginResetModel()
|
self.beginResetModel()
|
||||||
# Update database
|
# Update database
|
||||||
repository.move_rows(from_rows, self.playlist_id, to_row_number)
|
ds.move_rows(from_rows, self.playlist_id, to_row_number)
|
||||||
# Notify model changed
|
# Notify model changed
|
||||||
self.endResetModel()
|
self.endResetModel()
|
||||||
|
|
||||||
@ -896,7 +896,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
to_row_number + len(row_group)
|
to_row_number + len(row_group)
|
||||||
)
|
)
|
||||||
self.signals.signal_begin_insert_rows.emit(insert_rows)
|
self.signals.signal_begin_insert_rows.emit(insert_rows)
|
||||||
repository.move_rows(from_rows=row_group,
|
ds.move_rows(from_rows=row_group,
|
||||||
from_playlist_id=self.playlist_id,
|
from_playlist_id=self.playlist_id,
|
||||||
to_row=to_row_number,
|
to_row=to_row_number,
|
||||||
to_playlist_id=to_playlist_id)
|
to_playlist_id=to_playlist_id)
|
||||||
@ -1025,7 +1025,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
|
|
||||||
# build a new playlist_rows
|
# build a new playlist_rows
|
||||||
new_playlist_rows: dict[int, PlaylistRow] = {}
|
new_playlist_rows: dict[int, PlaylistRow] = {}
|
||||||
for dto in repository.get_playlist_rows(self.playlist_id):
|
for dto in ds.get_playlist_rows(self.playlist_id):
|
||||||
if dto.playlistrow_id not in plrid_to_row:
|
if dto.playlistrow_id not in plrid_to_row:
|
||||||
new_playlist_rows[dto.row_number] = PlaylistRow(dto)
|
new_playlist_rows[dto.row_number] = PlaylistRow(dto)
|
||||||
else:
|
else:
|
||||||
@ -1040,7 +1040,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
"""Populate dict for one row from database"""
|
"""Populate dict for one row from database"""
|
||||||
|
|
||||||
plrid = self.playlist_rows[row_number].playlistrow_id
|
plrid = self.playlist_rows[row_number].playlistrow_id
|
||||||
refreshed_row = repository.get_playlist_row(plrid)
|
refreshed_row = ds.get_playlist_row(plrid)
|
||||||
if not refreshed_row:
|
if not refreshed_row:
|
||||||
raise ApplicationError(f"Failed to retrieve row {self.playlist_id=}, {row_number=}")
|
raise ApplicationError(f"Failed to retrieve row {self.playlist_id=}, {row_number=}")
|
||||||
|
|
||||||
@ -1067,7 +1067,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
|
|
||||||
track = self.playlist_rows[row_number]
|
track = self.playlist_rows[row_number]
|
||||||
metadata = get_all_track_metadata(track.path)
|
metadata = get_all_track_metadata(track.path)
|
||||||
_ = repository.update_track(track.path, track.track_id, metadata)
|
_ = ds.update_track(track.path, track.track_id, metadata)
|
||||||
|
|
||||||
roles = [
|
roles = [
|
||||||
Qt.ItemDataRole.BackgroundRole,
|
Qt.ItemDataRole.BackgroundRole,
|
||||||
@ -1107,7 +1107,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
):
|
):
|
||||||
return
|
return
|
||||||
|
|
||||||
repository.remove_comments(self.playlist_id, row_numbers)
|
ds.remove_comments(self.playlist_id, row_numbers)
|
||||||
|
|
||||||
# only invalidate required roles
|
# only invalidate required roles
|
||||||
roles = [
|
roles = [
|
||||||
@ -1166,7 +1166,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
header_text = header_text[0:-1]
|
header_text = header_text[0:-1]
|
||||||
|
|
||||||
# Parse passed header text and remove the first colour match string
|
# Parse passed header text and remove the first colour match string
|
||||||
return repository.remove_colour_substring(header_text)
|
return ds.remove_colour_substring(header_text)
|
||||||
|
|
||||||
def rowCount(self, index: QModelIndex = QModelIndex()) -> int:
|
def rowCount(self, index: QModelIndex = QModelIndex()) -> int:
|
||||||
"""Standard function for view"""
|
"""Standard function for view"""
|
||||||
@ -1450,7 +1450,7 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
if not track_id:
|
if not track_id:
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
return repository.get_last_played_dates(track_id)
|
return ds.get_last_played_dates(track_id)
|
||||||
|
|
||||||
@log_call
|
@log_call
|
||||||
def update_or_insert(self, track_id: int, row_number: int) -> None:
|
def update_or_insert(self, track_id: int, row_number: int) -> None:
|
||||||
|
|||||||
@ -22,7 +22,7 @@ from config import Config
|
|||||||
import helpers
|
import helpers
|
||||||
from log import log
|
from log import log
|
||||||
from music_manager import Music
|
from music_manager import Music
|
||||||
import repository
|
import ds
|
||||||
|
|
||||||
|
|
||||||
class PlaylistRow:
|
class PlaylistRow:
|
||||||
@ -161,10 +161,10 @@ class PlaylistRow:
|
|||||||
if self.track_id > 0:
|
if self.track_id > 0:
|
||||||
raise ApplicationError("Attempting to add track to row with existing track ({self=}")
|
raise ApplicationError("Attempting to add track to row with existing track ({self=}")
|
||||||
|
|
||||||
repository.add_track_to_header(track_id)
|
ds.add_track_to_header(track_id)
|
||||||
|
|
||||||
# Need to update with track information
|
# Need to update with track information
|
||||||
track = repository.track_by_id(track_id)
|
track = ds.track_by_id(track_id)
|
||||||
if track:
|
if track:
|
||||||
for attr, value in track.__dataclass_fields__.items():
|
for attr, value in track.__dataclass_fields__.items():
|
||||||
setattr(self, attr, value)
|
setattr(self, attr, value)
|
||||||
@ -583,7 +583,7 @@ class TrackSequence:
|
|||||||
for ts in [self.next, self.current, self.previous]:
|
for ts in [self.next, self.current, self.previous]:
|
||||||
if not ts:
|
if not ts:
|
||||||
continue
|
continue
|
||||||
playlist_row_dto = repository.get_playlist_row(ts.playlistrow_id)
|
playlist_row_dto = ds.get_playlist_row(ts.playlistrow_id)
|
||||||
if not playlist_row_dto:
|
if not playlist_row_dto:
|
||||||
raise ApplicationError(f"(Can't retrieve PlaylistRows entry, {self=}")
|
raise ApplicationError(f"(Can't retrieve PlaylistRows entry, {self=}")
|
||||||
ts = PlaylistRow(playlist_row_dto)
|
ts = PlaylistRow(playlist_row_dto)
|
||||||
|
|||||||
@ -54,7 +54,7 @@ from helpers import (
|
|||||||
from log import log, log_call
|
from log import log, log_call
|
||||||
from playlistrow import TrackSequence
|
from playlistrow import TrackSequence
|
||||||
from playlistmodel import PlaylistModel, PlaylistProxyModel
|
from playlistmodel import PlaylistModel, PlaylistProxyModel
|
||||||
import repository
|
import ds
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from musicmuster import Window
|
from musicmuster import Window
|
||||||
@ -688,7 +688,7 @@ class PlaylistTab(QTableView):
|
|||||||
self.resizeRowsToContents()
|
self.resizeRowsToContents()
|
||||||
|
|
||||||
# Save settings
|
# Save settings
|
||||||
repository.set_setting(
|
ds.set_setting(
|
||||||
f"playlist_col_{column_number}_width", self.columnWidth(column_number)
|
f"playlist_col_{column_number}_width", self.columnWidth(column_number)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1071,7 +1071,7 @@ class PlaylistTab(QTableView):
|
|||||||
# Last column is set to stretch so ignore it here
|
# Last column is set to stretch so ignore it here
|
||||||
for column_number in range(header.count() - 1):
|
for column_number in range(header.count() - 1):
|
||||||
attr_name = f"playlist_col_{column_number}_width"
|
attr_name = f"playlist_col_{column_number}_width"
|
||||||
value = repository.get_setting(attr_name)
|
value = ds.get_setting(attr_name)
|
||||||
if value is not None:
|
if value is not None:
|
||||||
self.setColumnWidth(column_number, value)
|
self.setColumnWidth(column_number, value)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@ -39,7 +39,7 @@ from helpers import (
|
|||||||
)
|
)
|
||||||
from log import log, log_call
|
from log import log, log_call
|
||||||
from playlistrow import PlaylistRow
|
from playlistrow import PlaylistRow
|
||||||
import repository
|
import ds
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -228,7 +228,7 @@ class QuerylistModel(QAbstractTableModel):
|
|||||||
row = 0
|
row = 0
|
||||||
|
|
||||||
try:
|
try:
|
||||||
results = repository.get_filtered_tracks(self.filter)
|
results = ds.get_filtered_tracks(self.filter)
|
||||||
for result in results:
|
for result in results:
|
||||||
queryrow = QueryRow(
|
queryrow = QueryRow(
|
||||||
artist=result.artist,
|
artist=result.artist,
|
||||||
@ -271,4 +271,4 @@ class QuerylistModel(QAbstractTableModel):
|
|||||||
track_id = self.querylist_rows[row].track_id
|
track_id = self.querylist_rows[row].track_id
|
||||||
if not track_id:
|
if not track_id:
|
||||||
return QVariant()
|
return QVariant()
|
||||||
return repository.get_last_played_dates(track_id)
|
return ds.get_last_played_dates(track_id)
|
||||||
|
|||||||
@ -12,7 +12,7 @@ from helpers import (
|
|||||||
get_tags,
|
get_tags,
|
||||||
)
|
)
|
||||||
from log import log
|
from log import log
|
||||||
import repository
|
import ds
|
||||||
|
|
||||||
|
|
||||||
def check_db() -> None:
|
def check_db() -> None:
|
||||||
@ -26,7 +26,7 @@ def check_db() -> None:
|
|||||||
Check all paths in database exist
|
Check all paths in database exist
|
||||||
"""
|
"""
|
||||||
|
|
||||||
db_paths = set([a.path for a in repository.get_all_tracks()])
|
db_paths = set([a.path for a in ds.get_all_tracks()])
|
||||||
|
|
||||||
os_paths_list = []
|
os_paths_list = []
|
||||||
for root, _dirs, files in os.walk(Config.ROOT):
|
for root, _dirs, files in os.walk(Config.ROOT):
|
||||||
@ -51,7 +51,7 @@ def check_db() -> None:
|
|||||||
|
|
||||||
missing_file_count += 1
|
missing_file_count += 1
|
||||||
|
|
||||||
track = repository.track_by_path(path)
|
track = ds.track_by_path(path)
|
||||||
if not track:
|
if not track:
|
||||||
# This shouldn't happen as we're looking for paths in
|
# This shouldn't happen as we're looking for paths in
|
||||||
# database that aren't in filesystem, but just in case...
|
# database that aren't in filesystem, but just in case...
|
||||||
@ -88,7 +88,7 @@ def update_bitrates() -> None:
|
|||||||
Update bitrates on all tracks in database
|
Update bitrates on all tracks in database
|
||||||
"""
|
"""
|
||||||
|
|
||||||
for track in repository.get_all_tracks():
|
for track in ds.get_all_tracks():
|
||||||
try:
|
try:
|
||||||
t = get_tags(track.path)
|
t = get_tags(track.path)
|
||||||
# TODO this won't persist as we're updating DTO
|
# TODO this won't persist as we're updating DTO
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user