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

Reply via email to