trackdb: Give tracks an about_to_remove() function
And have the TrackAllocator call it before removing tracks Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
ec72f186bb
commit
8d6d4a0b44
|
@ -51,6 +51,7 @@ class TrackAllocator:
|
|||
to_rm = [ trak for trak in self.tracks.values() \
|
||||
if trak.library == lib and not trak.filepath().exists() ]
|
||||
for trak in to_rm:
|
||||
trak.about_to_remove()
|
||||
del self.tracks[trak.trackid]
|
||||
self.Removed.publish(trak)
|
||||
return to_rm
|
||||
|
@ -68,6 +69,7 @@ class TrackAllocator:
|
|||
|
||||
def remove(self, track):
|
||||
with self.lock:
|
||||
track.about_to_remove()
|
||||
del self.tracks[track.trackid]
|
||||
self.Removed.publish(track)
|
||||
|
||||
|
|
|
@ -11,11 +11,13 @@ test_tracks = pathlib.Path("./trier/Test Album")
|
|||
|
||||
class TestTrack(unittest.TestCase):
|
||||
def setUp(self):
|
||||
tags.reset()
|
||||
self.count_updated = 0
|
||||
self.lib = library.LibraryPath(test_tracks)
|
||||
track.TrackUpdated.register(self.on_track_updated)
|
||||
|
||||
def tearDown(self):
|
||||
tags.reset()
|
||||
track.reset()
|
||||
|
||||
def on_track_updated(self, path):
|
||||
|
@ -107,6 +109,16 @@ class TestTrack(unittest.TestCase):
|
|||
self.assertEqual(trak2.year, tags.Year[trak2.decade, "2019"])
|
||||
self.assertEqual(trak2["year"], "2019")
|
||||
|
||||
def test_track_about_to_remove(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
||||
trak.about_to_remove()
|
||||
|
||||
self.assertEqual(len(tags.Artist), 0)
|
||||
self.assertEqual(len(tags.Album), 0)
|
||||
self.assertEqual(len(tags.Genre), 0)
|
||||
self.assertEqual(len(tags.Decade), 0)
|
||||
self.assertEqual(len(tags.Year), 0)
|
||||
|
||||
def test_track_state(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
||||
state = trak.__getstate__()
|
||||
|
|
|
@ -56,6 +56,14 @@ class Track:
|
|||
self.decade = tags.Decade.init_track(self.decade, self)
|
||||
self.year = tags.Year.init_track(self.decade, self.year, self)
|
||||
|
||||
def about_to_remove(self):
|
||||
tags.Artist.remove(self.artist, self)
|
||||
tags.Album.remove(self.album, self)
|
||||
for genre in self.genres:
|
||||
tags.Genre.remove(genre, self)
|
||||
tags.Decade.remove(self.decade, self)
|
||||
tags.Year.remove(self.year, self)
|
||||
|
||||
def filepath(self):
|
||||
return self.library.name / self.path
|
||||
|
||||
|
|
Loading…
Reference in New Issue