Merge pull request #782 from PierreRust/fixRemoveFlexAttr

Fix remove flex attr
This commit is contained in:
Adrian Sampson 2014-05-20 16:00:00 -07:00
commit 452382bffa
3 changed files with 15 additions and 4 deletions

View file

@ -590,13 +590,16 @@ class FormattedItemMapping(dbcore.db.FormattedMapping):
if key in Album.item_keys or key not in item._fields.keys():
self.album_keys.append(key)
def get(self, key):
def get(self, key, default=None):
if key in self.album_keys:
return self.album._get_formatted(key, self.for_path)
elif key in self.model_keys:
return self.model._get_formatted(key, self.for_path)
else:
raise KeyError(key)
if default is None:
raise KeyError(key)
else:
return default
def __getitem__(self, key):
value = self.get(key)

View file

@ -576,8 +576,8 @@ def _field_diff(field, old, new):
return None
# Get formatted values for output.
oldstr = old.formatted.get(field) or u''
newstr = new.formatted.get(field) or u''
oldstr = old.formatted.get(field, u'')
newstr = new.formatted.get(field, u'')
# For strings, highlight changes. For others, colorize the whole
# thing.

View file

@ -225,6 +225,14 @@ class ModifyTest(_common.TestCase):
mediafile = MediaFile(item.path)
self.assertEqual(mediafile.initial_key, 'C#m')
def test_remove_flexattr(self):
self._modify(["flexattr=testAttr"], write=True)
item = self.lib.items().get()
self.assertEqual(item.flexattr, 'testAttr')
self._modify(dels=["flexattr"], write=True)
item = self.lib.items().get()
self.assertTrue("flexattr" not in item)
@unittest.skip('not yet implemented')
def test_delete_initial_key_tag(self):
item = self.i