mirror of
https://github.com/fergalmoran/picard.git
synced 2026-02-20 14:44:05 +00:00
Merge pull request #1141 from zas/metadata_use_cleanup
Metadata cleanup, second pass
This commit is contained in:
@@ -17,7 +17,10 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
# USA.
|
||||
from collections.abc import MutableMapping
|
||||
from collections.abc import (
|
||||
Iterable,
|
||||
MutableMapping,
|
||||
)
|
||||
|
||||
from PyQt5.QtCore import QObject
|
||||
|
||||
@@ -346,9 +349,9 @@ class Metadata(MutableMapping):
|
||||
self.deleted_tags.discard(name)
|
||||
|
||||
def __setitem__(self, name, values):
|
||||
if not isinstance(values, list):
|
||||
if isinstance(values, str) or not isinstance(values, Iterable):
|
||||
values = [values]
|
||||
values = [str(value) for value in values if value]
|
||||
values = [str(value) for value in values if value or value == 0]
|
||||
if values:
|
||||
self.set(name, values)
|
||||
elif name in self._store:
|
||||
|
||||
@@ -200,6 +200,16 @@ class MetadataTest(PicardTestCase):
|
||||
self.assertIn('c', m.deleted_tags)
|
||||
self.assertEqual(m.length, 1234)
|
||||
|
||||
def test_metadata_mapping_init_zero(self):
|
||||
m = Metadata(tag1='a', tag2=0, tag3='', tag4=None)
|
||||
m['tag5'] = 0
|
||||
m['tag1'] = ''
|
||||
self.assertIn('tag1', m.deleted_tags)
|
||||
self.assertEqual(m['tag2'], '0')
|
||||
self.assertNotIn('tag3', m)
|
||||
self.assertNotIn('tag4', m)
|
||||
self.assertEqual(m['tag5'], '0')
|
||||
|
||||
def test_metadata_mapping_del(self):
|
||||
m = self.metadata_d1
|
||||
self.assertEqual(m.getraw('a'), ['b'])
|
||||
@@ -342,3 +352,13 @@ class MetadataTest(PicardTestCase):
|
||||
m1.remove_image(0)
|
||||
self.assertEqual(len(m1), 1) # one tag, zero image
|
||||
self.assertFalse(m1.images)
|
||||
|
||||
def test_metadata_mapping_iterable(self):
|
||||
m = Metadata(tag_tuple=('a', 0))
|
||||
m['tag_set'] = {'c', 'd'}
|
||||
m['tag_dict'] = {'e': 1, 'f': 2}
|
||||
m['tag_str'] = 'gh'
|
||||
self.assertIn('0', m.getraw('tag_tuple'))
|
||||
self.assertIn('c', m.getraw('tag_set'))
|
||||
self.assertIn('e', m.getraw('tag_dict'))
|
||||
self.assertIn('gh', m.getraw('tag_str'))
|
||||
|
||||
Reference in New Issue
Block a user