mirror of
https://github.com/fergalmoran/picard.git
synced 2026-01-06 16:44:06 +00:00
Move remove_metadata_images() from imagelist to MetadataItem
- it doesn't belong here anyway - it depends on an object passed as obj -> self - transitional: local imports
This commit is contained in:
@@ -92,7 +92,6 @@ from picard.util import (
|
||||
)
|
||||
from picard.util.imagelist import (
|
||||
add_metadata_images,
|
||||
remove_metadata_images,
|
||||
update_metadata_images,
|
||||
)
|
||||
from picard.util.textencoding import asciipunct
|
||||
@@ -653,7 +652,7 @@ class Album(DataObject, MetadataItem):
|
||||
self._files_count -= 1
|
||||
if new_album:
|
||||
self.update(update_tracks=False)
|
||||
remove_metadata_images(self, [file])
|
||||
self.remove_metadata_images([file])
|
||||
|
||||
@staticmethod
|
||||
def _match_files(files, tracks, unmatched_files, threshold=0):
|
||||
|
||||
@@ -63,7 +63,6 @@ from picard.util import (
|
||||
)
|
||||
from picard.util.imagelist import (
|
||||
add_metadata_images,
|
||||
remove_metadata_images,
|
||||
update_metadata_images,
|
||||
)
|
||||
|
||||
@@ -137,7 +136,7 @@ class Cluster(FileList):
|
||||
if added_files:
|
||||
add_metadata_images(self.related_album, added_files)
|
||||
if removed_files:
|
||||
remove_metadata_images(self.related_album, removed_files)
|
||||
self.related_album.remove_metadata_images(removed_files)
|
||||
self.related_album.update()
|
||||
|
||||
def add_files(self, files, new_album=True):
|
||||
@@ -170,7 +169,7 @@ class Cluster(FileList):
|
||||
self.item.remove_file(file)
|
||||
if self.can_show_coverart:
|
||||
file.metadata_images_changed.disconnect(self.update_metadata_images)
|
||||
remove_metadata_images(self, [file])
|
||||
self.remove_metadata_images([file])
|
||||
if new_album:
|
||||
self._update_related_album(removed_files=[file])
|
||||
self.tagger.window.set_processing(False)
|
||||
|
||||
@@ -183,6 +183,30 @@ class MetadataItem(Item):
|
||||
self.enable_update_metadata_images(True)
|
||||
self.update_metadata_images()
|
||||
|
||||
def remove_metadata_images(self, removed_sources):
|
||||
"""Remove the images in the metadata of `removed_sources` from the metadata.
|
||||
|
||||
Args:
|
||||
removed_sources: List of child objects (`Track` or `File`) which's metadata images should be removed from
|
||||
"""
|
||||
from picard.util.imagelist import (
|
||||
_get_metadata_images,
|
||||
_get_state,
|
||||
_remove_images,
|
||||
)
|
||||
|
||||
state = _get_state(self)
|
||||
(removed_new_images, removed_orig_images) = _get_metadata_images(state, removed_sources)
|
||||
|
||||
if state.update_new_metadata:
|
||||
sources = [s.metadata for s in state.sources]
|
||||
_remove_images(self.metadata, sources, removed_new_images)
|
||||
if state.update_orig_metadata:
|
||||
from picard.track import Track
|
||||
sources = [s.orig_metadata for s in state.sources if not isinstance(s, Track)]
|
||||
_remove_images(self.orig_metadata, sources, removed_orig_images)
|
||||
|
||||
|
||||
class FileListItem(MetadataItem):
|
||||
|
||||
def __init__(self, files=None):
|
||||
|
||||
@@ -77,7 +77,6 @@ from picard.util import pattern_as_regex
|
||||
from picard.util.imagelist import (
|
||||
ImageList,
|
||||
add_metadata_images,
|
||||
remove_metadata_images,
|
||||
)
|
||||
from picard.util.textencoding import asciipunct
|
||||
|
||||
@@ -193,7 +192,7 @@ class Track(DataObject, FileListItem):
|
||||
file.metadata_images_changed.disconnect(self.update_metadata_images)
|
||||
file.copy_metadata(file.orig_metadata, preserve_deleted=False)
|
||||
self.album.remove_file(self, file, new_album=new_album)
|
||||
remove_metadata_images(self, [file])
|
||||
self.remove_metadata_images([file])
|
||||
if not self.files and self._orig_images:
|
||||
self.orig_metadata.images = self._orig_images
|
||||
self.metadata.images = self._orig_images.copy()
|
||||
|
||||
@@ -283,23 +283,3 @@ def _remove_images(metadata, sources, removed_images):
|
||||
|
||||
metadata.images = ImageList(current_images.difference(removed_images))
|
||||
metadata.has_common_images = common_images
|
||||
|
||||
|
||||
def remove_metadata_images(obj, removed_sources):
|
||||
"""Remove the images in the metadata of `removed_sources` from the metadata of `obj`.
|
||||
|
||||
Args:
|
||||
obj: A `Cluster`, `Album` or `Track` object with `metadata` property
|
||||
removed_sources: List of child objects (`Track` or `File`) which's metadata images should be removed from `obj`
|
||||
"""
|
||||
from picard.track import Track
|
||||
|
||||
state = _get_state(obj)
|
||||
(removed_new_images, removed_orig_images) = _get_metadata_images(state, removed_sources)
|
||||
|
||||
if state.update_new_metadata:
|
||||
sources = [s.metadata for s in state.sources]
|
||||
_remove_images(obj.metadata, sources, removed_new_images)
|
||||
if state.update_orig_metadata:
|
||||
sources = [s.orig_metadata for s in state.sources if not isinstance(s, Track)]
|
||||
_remove_images(obj.orig_metadata, sources, removed_orig_images)
|
||||
|
||||
@@ -34,7 +34,6 @@ from picard.track import Track
|
||||
from picard.util.imagelist import (
|
||||
ImageList,
|
||||
add_metadata_images,
|
||||
remove_metadata_images,
|
||||
update_metadata_images,
|
||||
)
|
||||
|
||||
@@ -148,7 +147,7 @@ class RemoveMetadataImagesTest(PicardTestCase):
|
||||
cluster.files = list(self.test_files)
|
||||
update_metadata_images(cluster)
|
||||
cluster.files.remove(self.test_files[0])
|
||||
remove_metadata_images(cluster, [self.test_files[0]])
|
||||
cluster.remove_metadata_images([self.test_files[0]])
|
||||
self.assertEqual(set(self.test_images[1:]), set(cluster.metadata.images))
|
||||
self.assertTrue(cluster.metadata.has_common_images)
|
||||
|
||||
@@ -157,7 +156,7 @@ class RemoveMetadataImagesTest(PicardTestCase):
|
||||
cluster.files = list(self.test_files[1:])
|
||||
update_metadata_images(cluster)
|
||||
cluster.files.remove(self.test_files[1])
|
||||
remove_metadata_images(cluster, [self.test_files[1]])
|
||||
cluster.remove_metadata_images([self.test_files[1]])
|
||||
self.assertEqual(set(self.test_images[1:]), set(cluster.metadata.images))
|
||||
self.assertTrue(cluster.metadata.has_common_images)
|
||||
|
||||
@@ -165,7 +164,7 @@ class RemoveMetadataImagesTest(PicardTestCase):
|
||||
cluster = Cluster('Test')
|
||||
cluster.files.append(File('test1.flac'))
|
||||
update_metadata_images(cluster)
|
||||
remove_metadata_images(cluster, [cluster.files[0]])
|
||||
cluster.remove_metadata_images([cluster.files[0]])
|
||||
self.assertEqual(set(), set(cluster.metadata.images))
|
||||
self.assertTrue(cluster.metadata.has_common_images)
|
||||
|
||||
@@ -174,7 +173,7 @@ class RemoveMetadataImagesTest(PicardTestCase):
|
||||
track.files = list(self.test_files)
|
||||
update_metadata_images(track)
|
||||
track.files.remove(self.test_files[0])
|
||||
remove_metadata_images(track, [self.test_files[0]])
|
||||
track.remove_metadata_images([self.test_files[0]])
|
||||
self.assertEqual(set(self.test_images[1:]), set(track.orig_metadata.images))
|
||||
self.assertTrue(track.orig_metadata.has_common_images)
|
||||
|
||||
@@ -183,7 +182,7 @@ class RemoveMetadataImagesTest(PicardTestCase):
|
||||
track.files = list(self.test_files[1:])
|
||||
update_metadata_images(track)
|
||||
track.files.remove(self.test_files[1])
|
||||
remove_metadata_images(track, [self.test_files[1]])
|
||||
track.remove_metadata_images([self.test_files[1]])
|
||||
self.assertEqual(set(self.test_images[1:]), set(track.orig_metadata.images))
|
||||
self.assertTrue(track.orig_metadata.has_common_images)
|
||||
|
||||
@@ -191,7 +190,7 @@ class RemoveMetadataImagesTest(PicardTestCase):
|
||||
track = Track('00000000-0000-0000-0000-000000000000')
|
||||
track.files.append(File('test1.flac'))
|
||||
update_metadata_images(track)
|
||||
remove_metadata_images(track, [track.files[0]])
|
||||
track.remove_metadata_images([track.files[0]])
|
||||
self.assertEqual(set(), set(track.orig_metadata.images))
|
||||
self.assertTrue(track.orig_metadata.has_common_images)
|
||||
|
||||
@@ -200,7 +199,7 @@ class RemoveMetadataImagesTest(PicardTestCase):
|
||||
album.unmatched_files.files = list(self.test_files)
|
||||
update_metadata_images(album)
|
||||
album.unmatched_files.files.remove(self.test_files[0])
|
||||
remove_metadata_images(album, [self.test_files[0]])
|
||||
album.remove_metadata_images([self.test_files[0]])
|
||||
self.assertEqual(set(self.test_images[1:]), set(album.metadata.images))
|
||||
self.assertEqual(set(self.test_images[1:]), set(album.orig_metadata.images))
|
||||
self.assertTrue(album.metadata.has_common_images)
|
||||
@@ -211,7 +210,7 @@ class RemoveMetadataImagesTest(PicardTestCase):
|
||||
album.unmatched_files.files = list(self.test_files[1:])
|
||||
update_metadata_images(album)
|
||||
album.unmatched_files.files.remove(self.test_files[1])
|
||||
remove_metadata_images(album, [self.test_files[1]])
|
||||
album.remove_metadata_images([self.test_files[1]])
|
||||
self.assertEqual(set(self.test_images[1:]), set(album.metadata.images))
|
||||
self.assertEqual(set(self.test_images[1:]), set(album.orig_metadata.images))
|
||||
self.assertTrue(album.metadata.has_common_images)
|
||||
@@ -221,7 +220,7 @@ class RemoveMetadataImagesTest(PicardTestCase):
|
||||
album = Album('00000000-0000-0000-0000-000000000000')
|
||||
album.unmatched_files.files.append(File('test1.flac'))
|
||||
update_metadata_images(album)
|
||||
remove_metadata_images(album, [album.unmatched_files.files[0]])
|
||||
album.remove_metadata_images([album.unmatched_files.files[0]])
|
||||
self.assertEqual(set(), set(album.metadata.images))
|
||||
self.assertEqual(set(), set(album.orig_metadata.images))
|
||||
self.assertTrue(album.metadata.has_common_images)
|
||||
|
||||
Reference in New Issue
Block a user