def test_delitem(self): orig_m2 = Metadata(self.m2) mp = MultiMetadataProxy(self.m1, self.m2, self.m3) del mp["key2"] del mp["key3"] self.assertIn("key2", self.m1.deleted_tags) self.assertIn("key3", self.m1.deleted_tags) self.assertEqual(orig_m2, self.m2)
def test_settitem(self): orig_m2 = Metadata(self.m2) mp = MultiMetadataProxy(self.m1, self.m2, self.m3) mp["key1"] = "foo1" mp["key2"] = "foo2" mp["key3"] = "foo3" mp["key4"] = "foo4" mp["key5"] = "foo5" self.assertEqual("foo1", self.m1["key1"]) self.assertEqual("foo2", self.m1["key2"]) self.assertEqual("foo3", self.m1["key3"]) self.assertEqual("foo4", self.m1["key4"]) self.assertEqual("foo5", self.m1["key5"]) self.assertEqual(orig_m2, self.m2)
def update_file_metadata(self, file): if file not in self.linked_files: return # Run the scripts for the file to allow usage of # file specific metadata and variables if config.setting["clear_existing_tags"]: metadata = Metadata(self.orig_metadata) metadata_proxy = MultiMetadataProxy(metadata, file.metadata) self.run_scripts(metadata_proxy) else: metadata = Metadata(file.metadata) metadata.update(self.orig_metadata) self.run_scripts(metadata) # Apply changes to the track's metadata done manually after the scripts ran meta_diff = self.metadata.diff(self.scripted_metadata) metadata.update(meta_diff) # Images are not affected by scripting, always use the tracks current images metadata.images = self.metadata.images file.copy_metadata(metadata) file.update(signal=False) self.update()
def test_gettitem(self): mp = MultiMetadataProxy(self.m1, self.m2, self.m3) self.assertEqual("m1.val1", mp["key1"]) self.assertEqual("m1.val2", mp["key2"]) self.assertEqual("m2.val3", mp["key3"]) self.assertEqual("m3.val4", mp["key4"])
def test_get_attribute(self): mp = MultiMetadataProxy(self.m1, self.m2, self.m3) self.assertEqual(mp.deleted_tags, self.m1.deleted_tags)
def get_metadata_object(): return MultiMetadataProxy(Metadata())