# HG changeset patch # User RĂ©mi Cardona # Date 1363345889 -3600 # Node ID 4032499c701ee79207bb3b7f8b4c627c387a335f # Parent 7da8339cd7682cf08902b5a3af61562f480508b4 [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. diff -r 7da8339cd768 -r 4032499c701e cwconfig.py --- 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: diff -r 7da8339cd768 -r 4032499c701e web/webconfig.py --- 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,