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:
Laurent Monin
2024-05-22 19:06:20 +02:00
parent e246eaa6b9
commit 6db8ae5382
6 changed files with 37 additions and 37 deletions

View File

@@ -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):

View File

@@ -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)

View File

@@ -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):

View File

@@ -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()

View File

@@ -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)

View File

@@ -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)