cwconfig.py
changeset 5917 64198285352e
parent 5890 141b935a38fc
child 5933 3d707b8f8a4d
equal deleted inserted replaced
5916:36206e846a27 5917:64198285352e
   495                              if x.startswith('cubicweb-'))
   495                              if x.startswith('cubicweb-'))
   496         if not isinstance(deps, dict):
   496         if not isinstance(deps, dict):
   497             deps = dict((key, None) for key in deps)
   497             deps = dict((key, None) for key in deps)
   498             warn('[3.8] cube %s should define %s as a dict' % (cube, key),
   498             warn('[3.8] cube %s should define %s as a dict' % (cube, key),
   499                  DeprecationWarning)
   499                  DeprecationWarning)
       
   500         for depcube in deps:
       
   501             try:
       
   502                 newname = CW_MIGRATION_MAP[depcube]
       
   503             except KeyError:
       
   504                 pass
       
   505             else:
       
   506                 deps[newname] = deps.pop(depcube)
   500         return deps
   507         return deps
   501 
   508 
   502     @classmethod
   509     @classmethod
   503     def cube_dependencies(cls, cube):
   510     def cube_dependencies(cls, cube):
   504         """return cubicweb cubes used by the given cube"""
   511         """return cubicweb cubes used by the given cube"""
   514         """expand the given list of top level cubes used by adding recursivly
   521         """expand the given list of top level cubes used by adding recursivly
   515         each cube dependencies
   522         each cube dependencies
   516         """
   523         """
   517         cubes = list(cubes)
   524         cubes = list(cubes)
   518         todo = cubes[:]
   525         todo = cubes[:]
       
   526         if with_recommends:
       
   527             available = set(cls.available_cubes())
   519         while todo:
   528         while todo:
   520             cube = todo.pop(0)
   529             cube = todo.pop(0)
   521             for depcube in cls.cube_dependencies(cube):
   530             for depcube in cls.cube_dependencies(cube):
   522                 if depcube not in cubes:
   531                 if depcube not in cubes:
   523                     depcube = CW_MIGRATION_MAP.get(depcube, depcube)
       
   524                     cubes.append(depcube)
   532                     cubes.append(depcube)
   525                     todo.append(depcube)
   533                     todo.append(depcube)
   526             if with_recommends:
   534             if with_recommends:
   527                 for depcube in cls.cube_recommends(cube):
   535                 for depcube in cls.cube_recommends(cube):
   528                     if depcube not in cubes:
   536                     if depcube not in cubes and depcube in available:
   529                         depcube = CW_MIGRATION_MAP.get(depcube, depcube)
       
   530                         cubes.append(depcube)
   537                         cubes.append(depcube)
   531                         todo.append(depcube)
   538                         todo.append(depcube)
   532         return cubes
   539         return cubes
   533 
   540 
   534     @classmethod
   541     @classmethod