trackdb: Clean up __init__.py file
And use the new tags.get_state() and tag.set_state() functions Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
0b4c440d66
commit
c27d4d5ce1
|
@ -100,10 +100,10 @@ class TestTrackDB(unittest.TestCase):
|
|||
self.count_removed += 1
|
||||
|
||||
def test_trackdb_init(self):
|
||||
self.assertIsInstance(trackdb.save_bus, bus.Bus)
|
||||
self.assertIsInstance(trackdb.Bus, bus.Bus)
|
||||
self.assertIsInstance(trackdb.Library, trackdb.LibraryStore)
|
||||
self.assertEqual(trackdb.db_file, "trackdb.pickle")
|
||||
self.assertEqual(trackdb.save_bus.timeout, 500)
|
||||
self.assertEqual(trackdb.File, "trackdb.pickle")
|
||||
self.assertEqual(trackdb.Bus.timeout, 500)
|
||||
|
||||
self.assertIn(trackdb.save, trackdb.Library.Added.subscribers)
|
||||
self.assertIn(trackdb.save, trackdb.Library.Removed.subscribers)
|
||||
|
@ -127,17 +127,17 @@ class TestTrackDB(unittest.TestCase):
|
|||
self.assertEqual(self.count_removed, 1)
|
||||
|
||||
def test_trackdb_save_load(self):
|
||||
db_file = data.DataFile(trackdb.db_file, data.READ)
|
||||
db_file = data.DataFile(trackdb.File, data.READ)
|
||||
lib = trackdb.Library.add(test_tracks)
|
||||
lib.scan()
|
||||
|
||||
trackdb.save()
|
||||
self.assertEqual(trackdb.save_bus.passengers, [ (trackdb._do_save, ()) ])
|
||||
self.assertEqual(trackdb.Bus.passengers, [ (trackdb._do_save, ()) ])
|
||||
self.assertFalse(db_file.exists())
|
||||
|
||||
lib.scan.join()
|
||||
trackdb.save_bus.complete()
|
||||
self.assertEqual(trackdb.save_bus.passengers, [ ])
|
||||
trackdb.Bus.complete()
|
||||
self.assertEqual(trackdb.Bus.passengers, [ ])
|
||||
self.assertTrue(db_file.exists())
|
||||
|
||||
trackdb.tags.reset()
|
||||
|
@ -154,8 +154,8 @@ class TestTrackDB(unittest.TestCase):
|
|||
|
||||
def test_trackdb_stress(self):
|
||||
lib = trackdb.Library.add(pathlib.Path("./trier/Test Library/"))
|
||||
lib.scan()
|
||||
trackdb.save_bus.complete()
|
||||
lib.scan().join()
|
||||
trackdb.Bus.complete()
|
||||
|
||||
def test_trackdb_reset(self):
|
||||
trackdb.Tracks.Added.register(1)
|
||||
|
@ -165,7 +165,7 @@ class TestTrackDB(unittest.TestCase):
|
|||
trackdb.Library.Removed.register(1)
|
||||
trackdb.Library.store = { "a" : 1, "b" : 2, "c" : 3 }
|
||||
trackdb.need_save = True
|
||||
with data.DataFile(trackdb.db_file, data.WRITE) as f:
|
||||
with data.DataFile(trackdb.File, data.WRITE) as f:
|
||||
f.pickle([ 0, [] ])
|
||||
|
||||
trackdb.reset()
|
||||
|
@ -175,4 +175,4 @@ class TestTrackDB(unittest.TestCase):
|
|||
self.assertIn(trackdb.save, trackdb.Tracks.Updated.subscribers)
|
||||
self.assertIn(trackdb.save, trackdb.Library.Added.subscribers)
|
||||
self.assertIn(trackdb.save, trackdb.Library.Removed.subscribers)
|
||||
self.assertFalse(data.DataFile(trackdb.db_file, data.READ).exists())
|
||||
self.assertFalse(data.DataFile(trackdb.File, data.READ).exists())
|
||||
|
|
|
@ -1,31 +1,26 @@
|
|||
# Copyright 2020 (c) Anna Schumaker.
|
||||
from lib import bus
|
||||
from lib import data
|
||||
from lib import publisher
|
||||
from lib import tag
|
||||
from lib import tagstore
|
||||
from lib import thread
|
||||
from . import allocator
|
||||
from . import tags
|
||||
from . import track
|
||||
import lib
|
||||
import pathlib
|
||||
import threading
|
||||
|
||||
db_file = "trackdb.pickle"
|
||||
save_bus = bus.Bus(500)
|
||||
File = "trackdb.pickle"
|
||||
Bus = lib.bus.Bus(500)
|
||||
Tracks = allocator.TrackAllocator()
|
||||
|
||||
class LibraryTag(tag.Tag):
|
||||
class LibraryTag(lib.tag.Tag):
|
||||
def __init__(self, path):
|
||||
super().__init__(path)
|
||||
self.clear = thread.Thread(self.__do_clear__)
|
||||
self.scan = thread.Thread(self.__do_scan__)
|
||||
self.clear = lib.thread.Thread(self.__do_clear__)
|
||||
self.scan = lib.thread.Thread(self.__do_scan__)
|
||||
|
||||
def __setstate__(self, state):
|
||||
super().__setstate__(state)
|
||||
self.tracks = [ Tracks[i] for i in state["tracks"] ]
|
||||
self.clear = thread.Thread(self.__do_clear__)
|
||||
self.scan = thread.Thread(self.__do_scan__)
|
||||
self.clear = lib.thread.Thread(self.__do_clear__)
|
||||
self.scan = lib.thread.Thread(self.__do_scan__)
|
||||
|
||||
def __do_scan__(self):
|
||||
for trak in Tracks.autoremove(self):
|
||||
|
@ -43,7 +38,7 @@ class LibraryTag(tag.Tag):
|
|||
self.tracks.clear()
|
||||
|
||||
|
||||
class LibraryStore(tagstore.TagStore):
|
||||
class LibraryStore(lib.tagstore.TagStore):
|
||||
def __alloc_tag__(self, name, sort):
|
||||
return LibraryTag(name)
|
||||
|
||||
|
@ -58,18 +53,19 @@ Library = LibraryStore()
|
|||
|
||||
|
||||
def _do_save():
|
||||
with data.DataFile(db_file, data.WRITE) as f:
|
||||
f.pickle([ tags.Artist, tags.Album, tags.Genre, tags.Decade, tags.Year, Tracks, Library ])
|
||||
with lib.data.DataFile(File, lib.data.WRITE) as f:
|
||||
f.pickle([ tags.get_state(), Tracks, Library ])
|
||||
|
||||
def save(*args):
|
||||
save_bus.board(_do_save)
|
||||
Bus.board(_do_save)
|
||||
|
||||
def load():
|
||||
global Library
|
||||
global Tracks
|
||||
with data.DataFile(db_file, data.READ) as f:
|
||||
with lib.data.DataFile(File, lib.data.READ) as f:
|
||||
if f.exists():
|
||||
(tags.Artist, tags.Album, tags.Genre, tags.Decade, tags.Year, Tracks, Library) = f.unpickle()
|
||||
(tagstate, Tracks, Library) = f.unpickle()
|
||||
tags.set_state(*tagstate)
|
||||
|
||||
def __register_callbacks():
|
||||
Library.Added.register(save)
|
||||
|
@ -83,7 +79,7 @@ def reset():
|
|||
Tracks.reset()
|
||||
Library.reset()
|
||||
tags.reset()
|
||||
save_bus.clear()
|
||||
Bus.clear()
|
||||
|
||||
data.DataFile(db_file, data.READ).remove()
|
||||
lib.data.DataFile(File, lib.data.READ).remove()
|
||||
__register_callbacks()
|
||||
|
|
Loading…
Reference in New Issue