Author: jmorliaguet
Date: Thu Jun 22 23:43:10 2006
New Revision: 3493

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

Log:

- cells are created (not imported since there are no Cell objects in v2)



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 
23:43:10 2006
@@ -34,15 +34,13 @@
         'Portal Theme': 'cpsskins.canvas.theme',
         'Theme Page': 'cpsskins.canvas.themepage',
         'Page Block': 'cpsskins.canvas.pageblock',
-        'Cell': 'cpsskins.canvas.cell',
-        'Slot': 'cpsskins.canvas.slot',
+        'Portal Box Group Templet': 'cpsskins.canvas.slot',
     }
 
     children_types = {
         'Portal Theme': ('Theme Page',),
         'Theme Page': ('Page Block',),
-        'Page Block': ('Cell',),
-        'Cell': ('Slot',),
+        'Page Block': ('',),
     }
 
     def __init__(self, file):
@@ -53,10 +51,12 @@
 
         self.archive = TarArchive(mode='r', data=file.read())
         self.resources = getUtility(IResourceManager)
+        self.objects = {}
 
     def __call__(self):
         theme_names = self.getThemeNames()
         for theme_name in theme_names:
+            #self.importStyles(theme_name)
             self.importTheme(theme_name)
             self.importImages(theme_name)
 
@@ -83,31 +83,50 @@
         theme = createObject('cpsskins.canvas.theme', **props)
         self.themes.addTheme(theme, name=theme_name)
 
+        # first stage: import themes > pages > page blocks
         self.importObject(theme_node, theme, 'themes/%s' % theme_name)
 
-    def importObject(self, node, obj, current_path):
+        # second stage: create cells in pageblocks
+        for pageblock_info in self.objects['Page Block']:
+            info = self.getProperties(pageblock_info['node'], 'maxcols')
+            container = pageblock_info['object']
+            for c in range(int(info['maxcols'])):
+                self.addObject('cpsskins.canvas.cell', container)
+
+    def addObject(self, type, container, name=u'', **props):
+        object = createObject(type, **props)
+        namechooser = INameChooser(container)
+        new_name = namechooser.chooseName(name, object)
+        container[new_name] = object
+
+    def importObject(self, node, container, current_path):
         archive = self.archive
         meta_type = node.getAttribute('meta_type')
         meta_types = self.meta_types
         children_types = self.children_types[meta_type]
         names = self.getObjects(node, children_types).keys()
-        namechooser = INameChooser(obj)
+
+        self.objects.setdefault(meta_type, []).append({
+            'path': current_path,
+            'object': container,
+            'node': node,
+        })
+
         for name in names:
             path = '%s/%s.xml' % (current_path, name)
             child_doc = parseString(archive[path])
             child_node = child_doc.childNodes[0]
             child_type = child_node.getAttribute('meta_type')
             props = self.getProperties(child_node, 'title')
-            child = createObject(meta_types[child_type], **props)
-            name = namechooser.chooseName(name, child)
-            obj[name] = child
-            self.importObject(child_node, obj, current_path + '/' + name)
+            self.addObject(meta_types[child_type], container, **props)
+            self.importObject(child_node, container, current_path + '/' + name)
 
     def importImages(self, theme_name):
         resources = self.resources
         archive = self.archive
         themes = self.themes
-        for item in archive['themes/%s/icons/' % theme_name]:
+        for item in archive['themes/%s/icons/' % theme_name] + \
+                    archive['themes/%s/backgrounds/' % theme_name]:
             image = WebImage(data=archive[item])
             name = self.getFileName(item)
             resources.register(name=theme_name, resource=image, context=themes)
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to