Author: jmorliaguet Date: Thu May 4 21:27:16 2006 New Revision: 3043 Modified: cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py
Log: - small refactoring to make it easier to import / export binary data Modified: cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py (original) +++ cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py Thu May 4 21:27:16 2006 @@ -118,7 +118,7 @@ """ refreshSettings() - def exportSettings(self): + def exportSettings(self, archive=None): """Export the settings as an XML file. """ context = self.context @@ -135,9 +135,10 @@ exporter.document = document exporter.save() - return document.toprettyxml(indent=u' ', encoding=u'utf-8') + archive[u'setting.xml'] = document.toprettyxml(indent=u' ', + encoding=u'utf-8') - def importSettings(self, xml=u''): + def importSettings(self, archive=None): """Import site settings """ context = self.context @@ -146,7 +147,7 @@ mgr = getThemeManager(context) settings = mgr.getSettings() - dom = parseString(xml) + dom = parseString(archive[u'setting.xml']) importer = getMultiAdapter((mgr, dom), IDOMAdapter, name=u'settings') importer.load() @@ -158,11 +159,11 @@ """ archive = TarArchive(mode='w') - archive[u'themes.xml'] = self.exportThemes() - archive[u'settings.xml'] = self.exportSettings() + self.exportThemes(archive) + self.exportSettings(archive) - for storage in u'formats', u'displays', u'portlets', u'relations': - archive['%s.xml' % storage] = self.exportStorage(storage) + for name in u'formats', u'displays', u'portlets', u'relations': + self.exportStorage(name, archive) return archive() @@ -173,13 +174,11 @@ uri_mapping = {} # themes - uri_mapping.update(self.importThemes(archive[u'themes.xml'])) + uri_mapping.update(self.importThemes(archive)) # storages - for storage_id in u'formats', u'displays', u'portlets': - storage = mgr[storage_id] - data = archive[u'%s.xml' % storage_id] - uri_mapping.update(self.importStorage(storage_id, data)) + for name in u'formats', u'displays', u'portlets': + uri_mapping.update(self.importStorage(name, archive)) # relations relations = mgr.getRelationStorage() @@ -254,7 +253,7 @@ ### Storage ###################################################### - def exportStorage(self, name=u''): + def exportStorage(self, name=u'', archive=None): """Export the storage as XML. """ if not name: @@ -272,11 +271,11 @@ exporter.fields_as_attributes = u'title', u'description' exporter.save() - xml = document.toprettyxml(indent=u' ', encoding=u'utf-8') + archive['%s.xml' % name] = document.toprettyxml(indent=u' ', + encoding=u'utf-8') document.unlink() - return xml - def importStorage(self, name=u'', xml=u''): + def importStorage(self, name=u'', archive=None): if not name: raise KeyError("Must specify a storage name.") @@ -285,7 +284,7 @@ storage = mgr[name] storage.purge() - document = parseString(xml) + document = parseString(archive[u'%s.xml' % name]) root = document.documentElement uri_mapping = {} @@ -315,7 +314,7 @@ ### Themes ####################################################### - def exportThemes(self): + def exportThemes(self, archive=None): """Export the themes """ document = DOMImplementation().createDocument(None, u'themes', None) @@ -328,14 +327,14 @@ exporter.ignored_fields = u'slot', exporter.save() - xml = document.toprettyxml(indent=u' ', encoding=u'utf-8') + archive[u'themes.xml'] = document.toprettyxml(indent=u' ', + encoding=u'utf-8') document.unlink() - return xml - def importThemes(self, xml=u''): + def importThemes(self, archive=None): """Import themes from XML """ - document = parseString(xml) + document = parseString(archive[u'themes.xml']) root = document.documentElement uri_mapping = {} @@ -343,9 +342,6 @@ mgr = getThemeManager(self.context) mgr.deleteAllThemes() - document = parseString(xml) - root = document.documentElement - for el in root.getElementsByTagName(u'theme'): if el.nodeType != Node.ELEMENT_NODE: continue -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins