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