tagdb: Have Tracks schedule an ImportTask when loading
And a CommitTask when we're done. Note: we only load and import the tagdb if we are creating a new database. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
2f1b7b397f
commit
52415cf4da
|
@ -3,8 +3,10 @@ from . import allocator
|
|||
from . import stack
|
||||
from . import tags
|
||||
from . import track
|
||||
import db
|
||||
import lib
|
||||
import pathlib
|
||||
import scanner
|
||||
import threading
|
||||
|
||||
File = "tagdb.pickle"
|
||||
|
@ -78,6 +80,8 @@ def load():
|
|||
global Library
|
||||
global Tracks
|
||||
global Stack
|
||||
if not db.new_db():
|
||||
return
|
||||
with lib.data.DataFile(File, lib.data.READ) as f:
|
||||
if f.exists():
|
||||
(tagstate, Tracks, Library, Stack) = f.unpickle()
|
||||
|
@ -85,6 +89,7 @@ def load():
|
|||
Tracks.load_tags()
|
||||
Library.fix_tracks()
|
||||
__register_callbacks()
|
||||
scanner.Queue.push(scanner.task.CommitTask())
|
||||
|
||||
def __register_callbacks():
|
||||
for store in [ Library, tags.User, Tracks ]:
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Copyright 2020 (c) Anna Schumaker.
|
||||
import db
|
||||
import lib
|
||||
import pathlib
|
||||
import tagdb
|
||||
|
@ -8,6 +9,7 @@ test_tracks = pathlib.Path("./data/Test Album")
|
|||
|
||||
class TestLibraryTag(unittest.TestCase):
|
||||
def tearDown(self):
|
||||
db.NewDatabase = True
|
||||
tagdb.reset()
|
||||
|
||||
def test_library_tag_init(self):
|
||||
|
@ -122,6 +124,7 @@ class TestTrackDB(unittest.TestCase):
|
|||
tagdb.Bus.complete()
|
||||
self.assertTrue(db_file.exists())
|
||||
|
||||
db.reset()
|
||||
tagdb.tags.reset()
|
||||
tagdb.Library.reset()
|
||||
tagdb.Tracks.reset()
|
||||
|
|
|
@ -4,6 +4,8 @@ from lib import publisher
|
|||
from . import tags
|
||||
from gi.repository import GObject
|
||||
import datetime
|
||||
import db
|
||||
import scanner
|
||||
|
||||
class Track(GObject.Object):
|
||||
def __init__(self, trackid, filepath, library):
|
||||
|
@ -66,6 +68,9 @@ class Track(GObject.Object):
|
|||
self.decade = tags.Decade.init_track(self.decade, self)
|
||||
self.year = tags.Year.init_track(self.decade, self.year, self)
|
||||
self.playlists = [ tags.User.init_track(p, self) for p in self.playlists ]
|
||||
scanner.import_track(db.library.Table.find(self.library.name),
|
||||
self.filepath(), self.playcount, self.lastplayed,
|
||||
[ p.name for p in self.playlists ])
|
||||
|
||||
def about_to_remove(self):
|
||||
tags.Artist.remove(self.artist, self)
|
||||
|
|
Loading…
Reference in New Issue