Renamed File.parent to File.parent_item

This avoids hiding QObject.parent()
This commit is contained in:
Philipp Wolfer
2024-06-03 08:26:44 +02:00
parent d4ba9fc989
commit b2861cdeb6
11 changed files with 44 additions and 44 deletions

View File

@@ -309,7 +309,7 @@ class Cluster(FileList):
# If the file is attached to a track we should use the original
# metadata for clustering. This is often used by users when moving
# mismatched files back from the right pane to the left.
if isinstance(file.parent, Track):
if isinstance(file.parent_item, Track):
metadata = file.orig_metadata
else:
metadata = file.metadata

View File

@@ -168,7 +168,7 @@ class File(MetadataItem):
self.error_type = FileErrorType.UNKNOWN
self.similarity = 1.0
self.parent = None
self.parent_item = None
self.lookup_task = None
@@ -627,36 +627,36 @@ class File(MetadataItem):
new_file_path, why)
def remove(self, from_parent=True):
if from_parent and self.parent:
log.debug("Removing %r from %r", self, self.parent)
self.parent.remove_file(self)
if from_parent and self.parent_item:
log.debug("Removing %r from %r", self, self.parent_item)
self.parent_item.remove_file(self)
self.tagger.acoustidmanager.remove(self)
self.state = File.REMOVED
def move(self, parent):
# To be able to move a file the target must implement add_file(file)
if hasattr(parent, 'add_file') and parent != self.parent:
log.debug("Moving %r from %r to %r", self, self.parent, parent)
if hasattr(parent, 'add_file') and parent != self.parent_item:
log.debug("Moving %r from %r to %r", self, self.parent_item, parent)
self.clear_lookup_task()
self.tagger._acoustid.stop_analyze(self)
new_album = True
if self.parent:
new_album = self.parent.album != parent.album
if self.parent_item:
new_album = self.parent_item.album != parent.album
self.clear_pending()
self.parent.remove_file(self, new_album=new_album)
self.parent = parent
self.parent.add_file(self, new_album=new_album)
self.parent_item.remove_file(self, new_album=new_album)
self.parent_item = parent
self.parent_item.add_file(self, new_album=new_album)
self.acoustid_update()
return True
else:
return False
def _move(self, parent):
if parent != self.parent:
log.debug("Moving %r from %r to %r", self, self.parent, parent)
if self.parent:
self.parent.remove_file(self)
self.parent = parent
if parent != self.parent_item:
log.debug("Moving %r from %r to %r", self, self.parent_item, parent)
if self.parent_item:
self.parent_item.remove_file(self)
self.parent_item = parent
self.acoustid_update()
def set_acoustid_fingerprint(self, fingerprint, length=None):
@@ -675,8 +675,8 @@ class File(MetadataItem):
def acoustid_update(self):
recording_id = None
if self.parent and self.parent.can_link_fingerprint:
recording_id = self.parent.orig_metadata['musicbrainz_recordingid']
if self.parent_item and self.parent_item.can_link_fingerprint:
recording_id = self.parent_item.orig_metadata['musicbrainz_recordingid']
if not recording_id:
recording_id = self.metadata['musicbrainz_recordingid']
self.tagger.acoustidmanager.update(self, recording_id)

View File

@@ -720,8 +720,8 @@ _Since Picard 0.12_"""
def func_matchedtracks(parser, *args):
# only works in file naming scripts, always returns zero in tagging scripts
file = parser.file
if file and file.parent and hasattr(file.parent, 'album') and file.parent.album:
return str(parser.file.parent.album.get_num_matched_tracks())
if file and file.parent_item and hasattr(file.parent_item, 'album') and file.parent_item.album:
return str(parser.file.parent_item.album.get_num_matched_tracks())
return '0'
@@ -734,8 +734,8 @@ Returns true if every track in the album is matched to a single file.
def func_is_complete(parser):
# only works in file naming scripts, always returns zero in tagging scripts
file = parser.file
if (file and file.parent and hasattr(file.parent, 'album') and file.parent.album
and file.parent.album.is_complete()):
if (file and file.parent_item and hasattr(file.parent_item, 'album') and file.parent_item.album
and file.parent_item.album.is_complete()):
return '1'
return ''

View File

@@ -865,11 +865,11 @@ class Tagger(QtWidgets.QApplication):
if isinstance(target, Album):
self.move_files_to_album([file], album=target)
else:
if isinstance(target, File) and target.parent:
target = target.parent
if isinstance(target, File) and target.parent_item:
target = target.parent_item
if not file.move(target):
# Ensure a file always has a parent so it shows up in UI
if not file.parent:
if not file.parent_item:
target = self.unclustered_files
file.move(target)
# Unsupported target, do not move the file
@@ -893,7 +893,7 @@ class Tagger(QtWidgets.QApplication):
target = album.get_next_track(target) or album.unmatched_files
elif isinstance(target, File):
for file in process_events_iter(files):
file.move(target.parent)
file.move(target.parent_item)
elif isinstance(target, Album):
self.move_files_to_album(files, album=target)
elif isinstance(target, ClusterList):

View File

@@ -364,7 +364,7 @@ def set_image_append(obj, coverartimage):
def iter_file_parents(file):
parent = file.parent
parent = file.parent_item
if parent:
yield parent
if isinstance(parent, Track) and parent.album:

View File

@@ -175,7 +175,7 @@ class InfoDialog(PicardDialog):
has_orig_images = hasattr(obj, 'orig_metadata') and obj.orig_metadata.images
if has_orig_images and obj.orig_metadata.images != obj.metadata.images:
is_track = isinstance(obj, Track)
is_linked_file = isinstance(obj, File) and isinstance(obj.parent, Track)
is_linked_file = isinstance(obj, File) and isinstance(obj.parent_item, Track)
is_album_with_files = isinstance(obj, Album) and obj.get_num_total_files() > 0
if is_track or is_linked_file or is_album_with_files:
self.orig_images = sorted(obj.orig_metadata.images)

View File

@@ -576,7 +576,7 @@ class FileItem(TreeItem):
else:
icon = FileItem.icon_error
tooltip = _("Processing error(s): See the Errors tab in the File Info dialog")
elif isinstance(file.parent, Track):
elif isinstance(file.parent_item, Track):
if file.state == File.NORMAL:
icon = FileItem.icon_saved
tooltip = _("Track saved")

View File

@@ -1071,7 +1071,7 @@ class MainWindow(QtWidgets.QMainWindow, PreserveGeometry):
# unclustered files cluster all unclustered files.
files = (
f for f in iter_files_from_objects(self.selected_objects)
if f.parent == self.tagger.unclustered_files
if f.parent_item == self.tagger.unclustered_files
)
try:
file = next(files)

View File

@@ -417,10 +417,10 @@ class MetadataBox(QtWidgets.QTableWidget):
track_albums = set()
for file in self.files:
objects = [file]
if file.parent in self.tracks and len(self.files & set(file.parent.files)) == 1:
objects.append(file.parent)
file_tracks.append(file.parent)
track_albums.add(file.parent.album)
if file.parent_item in self.tracks and len(self.files & set(file.parent_item.files)) == 1:
objects.append(file.parent_item)
file_tracks.append(file.parent_item)
track_albums.add(file.parent_item.album)
orig_values = list(file.orig_metadata.getall(tag)) or [""]
useorigs.append(partial(self._set_tag_values, tag, orig_values, objects))
for track in set(self.tracks)-set(file_tracks):

View File

@@ -180,9 +180,9 @@ class TrackSearchDialog(SearchDialog):
self.tagger.get_release_group_by_id(releasegroup_id).loaded_albums.add(album_id)
if file:
# Search is performed for a file.
if isinstance(file.parent, Track):
if isinstance(file.parent_item, Track):
# Have to move that file from its existing album to the new one.
album = file.parent.album
album = file.parent_item.album
self.tagger.move_file_to_track(file, album_id, recording_id)
if album.get_num_total_files() == 0:
# Remove album if it has no more files associated
@@ -200,9 +200,9 @@ class TrackSearchDialog(SearchDialog):
if file:
# Search is performed for a file.
if getattr(file.parent, 'album', None):
if getattr(file.parent_item, 'album', None):
# Have to move that file from its existing album to NAT.
album = file.parent.album
album = file.parent_item.album
self.tagger.move_file_to_nat(file, recording_id, node)
if album.get_num_total_files() == 0:
self.tagger.remove_album(album)

View File

@@ -1350,7 +1350,7 @@ class ScriptParserTest(PicardTestCase):
def test_cmd_matchedtracks(self):
file = MagicMock()
file.parent.album.get_num_matched_tracks.return_value = 42
file.parent_item.album.get_num_matched_tracks.return_value = 42
self.assertScriptResultEquals("$matchedtracks()", "42", file=file)
self.assertScriptResultEquals("$matchedtracks()", "0")
# The following only is possible for backward compatibility, arg is unused
@@ -1360,14 +1360,14 @@ class ScriptParserTest(PicardTestCase):
file = MagicMock()
cluster = Cluster(name="Test")
cluster.files.append(file)
file.parent = cluster
file.parent_item = cluster
self.assertScriptResultEquals("$matchedtracks()", "0", file=file)
def test_cmd_is_complete(self):
file = MagicMock()
file.parent.album.is_complete.return_value = True
file.parent_item.album.is_complete.return_value = True
self.assertScriptResultEquals("$is_complete()", "1", file=file)
file.parent.album.is_complete.return_value = False
file.parent_item.album.is_complete.return_value = False
self.assertScriptResultEquals("$is_complete()", "", file=file)
self.assertScriptResultEquals("$is_complete()", "")
@@ -1375,7 +1375,7 @@ class ScriptParserTest(PicardTestCase):
file = MagicMock()
cluster = Cluster(name="Test")
cluster.files.append(file)
file.parent = cluster
file.parent_item = cluster
self.assertScriptResultEquals("$is_complete()", "", file=file)
def test_cmd_is_video(self):