db: Add tracks.trackid ASC as a fallback sort option
This keeps us from ever completely clearing the sort field in the playlist state, since that would lead to an incomplete SQL query error. Fixes: #38 (PlaylistStates should not allow completely clearing sort) Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
d8dbba0960
commit
f82e299736
|
@ -9,7 +9,7 @@ from . import sql
|
|||
from . import table
|
||||
|
||||
DefaultSort = [ "artists.sort ASC", "albums.sort ASC", "years.year ASC",
|
||||
"discs.number ASC", "tracks.number ASC" ]
|
||||
"discs.number ASC", "tracks.number ASC", "tracks.trackid ASC" ]
|
||||
|
||||
class PlaylistState(GObject.GObject):
|
||||
def __init__(self, row):
|
||||
|
@ -45,7 +45,10 @@ class PlaylistState(GObject.GObject):
|
|||
def sort(self): return self._sort.split(",")
|
||||
|
||||
@sort.setter
|
||||
def sort(self, newval): self._sort = self.update("sort", ",".join(newval))
|
||||
def sort(self, newval):
|
||||
if "tracks.trackid ASC" not in newval:
|
||||
newval.append("tracks.trackid ASC")
|
||||
self._sort = self.update("sort", ",".join(newval))
|
||||
|
||||
def update(self, column, newval):
|
||||
sql.execute(f"UPDATE playlist_states SET {column}=? WHERE plstateid=?",
|
||||
|
|
|
@ -63,8 +63,10 @@ class TestPlaylist(unittest.TestCase):
|
|||
plist.connect("refreshed", self.on_refresh)
|
||||
self.assertEqual(plist.get_property("sort"), plist.plist_state.sort)
|
||||
plist.set_property("sort", [ "rowid ASC" ])
|
||||
self.assertEqual(plist.get_property("sort"), [ "rowid ASC" ])
|
||||
self.assertEqual(plist.plist_state.get_property("sort"), [ "rowid ASC" ])
|
||||
self.assertEqual(plist.get_property("sort"),
|
||||
[ "rowid ASC", "tracks.trackid ASC" ])
|
||||
self.assertEqual(plist.plist_state.get_property("sort"),
|
||||
[ "rowid ASC", "tracks.trackid ASC" ])
|
||||
self.assertTrue(self.refreshed)
|
||||
|
||||
|
||||
|
|
|
@ -43,7 +43,9 @@ class TestPlaylistState(unittest.TestCase):
|
|||
self.assertEqual(state.sort, db.state.DefaultSort)
|
||||
|
||||
state.sort = [ "test", "sort" ]
|
||||
self.assertEqual(state._sort, "test,sort" )
|
||||
self.assertEqual(state._sort, "test,sort,tracks.trackid ASC" )
|
||||
state.sort = [ ]
|
||||
self.assertEqual(state._sort, "tracks.trackid ASC" )
|
||||
|
||||
|
||||
class TestPlaylistStateTable(unittest.TestCase):
|
||||
|
|
Loading…
Reference in New Issue