[cwconfig] Add optional configuration param to load a UI cube before other cubes
Needed later on to load UI cubes such as legacyui, and one day squareui.
--- a/cwconfig.py Tue Apr 02 12:13:06 2013 +0200
+++ b/cwconfig.py Fri Mar 15 12:11:29 2013 +0100
@@ -565,19 +565,27 @@
todo.append(depcube)
return cubes
- @classmethod
- def reorder_cubes(cls, cubes):
+ def reorder_cubes(self, cubes):
"""reorder cubes from the top level cubes to inner dependencies
cubes
"""
from logilab.common.graph import ordered_nodes, UnorderableGraph
+ # See help string for 'ui-cube' in web/webconfig.py for the reasons
+ # behind this hack.
+ uicube = self.get('ui-cube', None)
graph = {}
+ if uicube:
+ graph[uicube] = set()
for cube in cubes:
cube = CW_MIGRATION_MAP.get(cube, cube)
- graph[cube] = set(dep for dep in cls.cube_dependencies(cube)
+ graph[cube] = set(dep for dep in self.cube_dependencies(cube)
if dep in cubes)
- graph[cube] |= set(dep for dep in cls.cube_recommends(cube)
+ graph[cube] |= set(dep for dep in self.cube_recommends(cube)
if dep in cubes)
+ if uicube and cube != uicube \
+ and cube not in self.cube_dependencies(uicube) \
+ and cube not in self.cube_recommends(uicube):
+ graph[cube].add(uicube)
try:
return ordered_nodes(graph)
except UnorderableGraph as ex:
--- a/web/webconfig.py Tue Apr 02 12:13:06 2013 +0200
+++ b/web/webconfig.py Fri Mar 15 12:11:29 2013 +0100
@@ -111,6 +111,14 @@
'group': 'web', 'level': 3,
}),
# web configuration
+ ('ui-cube',
+ {'type' : 'string',
+ 'default': None,
+ 'help': 'the name of the UI cube that will be loaded before all other '\
+ 'cubes. Setting this value to None will instruct cubicweb not to load '\
+ 'any extra cube.',
+ 'group': 'web', 'level': 3,
+ }),
('https-url',
{'type' : 'string',
'default': None,