From 9929ba8eeb2b831844ea57fd12cf305f9b9b6b26 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 5 Feb 2009 22:31:50 -0800 Subject: [PATCH] IGN:More minor OPF fixes --- src/calibre/ebooks/metadata/opf2.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/metadata/opf2.py b/src/calibre/ebooks/metadata/opf2.py index 3f3e3581a6..2e6fe598ec 100644 --- a/src/calibre/ebooks/metadata/opf2.py +++ b/src/calibre/ebooks/metadata/opf2.py @@ -642,6 +642,9 @@ class OPF(object): def fset(self, val): matches = self.authors_path(self.metadata) if matches: + for key in matches[0].attrib: + if key.endswith('file-as'): + matches[0].attrib.pop(key) matches[0].set('file-as', unicode(val)) return property(fget=fget, fset=fset) @@ -662,6 +665,9 @@ class OPF(object): def fset(self, val): matches = self.title_path(self.metadata) if matches: + for key in matches[0].attrib: + if key.endswith('file-as'): + matches[0].attrib.pop(key) matches[0].set('file-as', unicode(val)) return property(fget=fget, fset=fset) @@ -822,7 +828,6 @@ class OPF(object): val = getattr(mi, attr, None) if val is not None and val != [] and val != (None, None): setattr(self, attr, val) - print self.render() class OPFCreator(MetaInformation): @@ -969,7 +974,7 @@ class OPFTest(unittest.TestCase): self.assertEqual(opf.tags, ['One', 'Two']) self.assertEqual(opf.isbn, '123456789') self.assertEqual(opf.series, 'A one book series') - self.assertEqual(opf.series_index, None) + self.assertEqual(opf.series_index, 1) self.assertEqual(list(opf.itermanifest())[0].get('href'), 'a ~ b') def testWriting(self): @@ -978,7 +983,8 @@ class OPFTest(unittest.TestCase): ('isbn', 'a'), ('rating', 3), ('series_index', 1), ('title_sort', 'ts')]: setattr(self.opf, *test) - self.assertEqual(getattr(self.opf, test[0]), test[1]) + attr, val = test + self.assertEqual(getattr(self.opf, attr), val) self.opf.render() @@ -990,7 +996,7 @@ class OPFTest(unittest.TestCase): self.testReading(opf=OPF(cStringIO.StringIO(raw), os.getcwd())) def testSmartUpdate(self): - self.opf.smart_update(self.opf) + self.opf.smart_update(MetaInformation(self.opf)) self.testReading() def suite(): @@ -1001,6 +1007,7 @@ def test(): def option_parser(): + from calibre.ebooks.metadata import get_parser parser = get_parser('opf') parser.add_option('--language', default=None, help=_('Set the dc:language field')) return parser