Author: jmorliaguet
Date: Thu Jun 22 15:07:08 2006
New Revision: 3490

Modified:
   cpsskins/branches/paris-sprint-2006/setup/io/migration.py

Log:

- import pages



Modified: cpsskins/branches/paris-sprint-2006/setup/io/migration.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/setup/io/migration.py   (original)
+++ cpsskins/branches/paris-sprint-2006/setup/io/migration.py   Thu Jun 22 
15:07:08 2006
@@ -21,6 +21,7 @@
 from zope.component import getUtility
 
 from cpsskins.elements.theme import Theme
+from cpsskins.elements.themepage import ThemePage
 from cpsskins.setup.archives import TarArchive
 from cpsskins.setup.interfaces import IResourceManager
 from cpsskins.standard.fields.image import WebImage
@@ -43,6 +44,7 @@
         for theme_name in theme_names:
             self.importTheme(theme_name)
             self.importImages(theme_name)
+
         return self.themes
 
     def getThemeNames(self):
@@ -53,10 +55,12 @@
             names.append(item[len('themes/'):-1])
         return names
 
-    def importTheme(self, name=u''):
-        path = 'themes/%s.xml' % name
-        doc = parseString(self.archive[path])
+    def importTheme(self, theme_name=u''):
+        themes = self.themes
+        archive = self.archive
+        path = 'themes/%s.xml' % theme_name
 
+        doc = parseString(archive[path])
         theme_node = doc.childNodes[0]
         theme_name = theme_node.getAttribute('name')
         props = self.getProperties(theme_node, 'title', 'author', 'copyright',
@@ -64,14 +68,22 @@
         theme = Theme(**props)
         self.themes.addTheme(theme, name=theme_name)
 
-    def importImages(self, name):
+        page_names = self.getObjects(doc.childNodes[0], 'Theme Page').keys()
+        for page_name in page_names:
+            page_path = 'themes/%s/%s.xml' % (theme_name, page_name)
+            page_node = parseString(archive[page_path])
+            props = self.getProperties(page_node, 'title')
+            page = ThemePage(**props)
+            themes.addPage(theme, page)
+
+    def importImages(self, theme_name):
         resources = self.resources
         archive = self.archive
         themes = self.themes
-        for item in archive['themes/%s/icons/' % name]:
+        for item in archive['themes/%s/icons/' % theme_name]:
             image = WebImage(data=archive[item])
             name = self.getFileName(item)
-            resources.register(name=name, resource=image, context=themes)
+            resources.register(name=theme_name, resource=image, context=themes)
 
     ### utilities
 
@@ -88,6 +100,16 @@
             info[str(name)] = value
         return info
 
+    def getObjects(self, node=None, type=u''):
+        info = {}
+        for obj in node.getElementsByTagName('object'):
+            name = obj.getAttribute('name')
+            meta_type = obj.getAttribute('meta_type')
+            if type and type != meta_type:
+                continue
+            info[name] = meta_type
+        return info
+
     def getFileName(self, path):
         return path.split('/')[-1]
 
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to