[FIX] Extension of controller in-place with explicit spec of same _cp_path
When extending a controller in-place (e.g. A(Controller), B(A)) and providing the exact same _cp_path as parent (no-op) execution path would go into handler for _cp_path overwriting and raise an assertion error for overwriting of existing controller. Except this is allowed (if ugly) pattern, so warn & ignore behavior (it is harmless). bzr revid: xmo@openerp.com-20130418092405-wrmmrd648b9koefu
This commit is contained in:
+7
-1
@@ -381,6 +381,12 @@ class ControllerType(type):
|
||||
|
||||
# inherit from a Controller subclass
|
||||
if path:
|
||||
# if extending in place with same URL, ignore URL
|
||||
if parent_path == path:
|
||||
_logger.warn(
|
||||
"Controller %s extending %s in-place should not "
|
||||
"explicitly specify URL", cls, parent)
|
||||
return
|
||||
_logger.warn("Re-exposing %s at %s.\n"
|
||||
"\tThis usage is unsupported.",
|
||||
parent.__name__,
|
||||
@@ -398,7 +404,7 @@ class Controller(object):
|
||||
|
||||
def __new__(cls, *args, **kwargs):
|
||||
subclasses = [c for c in cls.__subclasses__()
|
||||
if c._cp_path is cls._cp_path]
|
||||
if c._cp_path == cls._cp_path]
|
||||
if subclasses:
|
||||
name = "%s (+%s)" % (
|
||||
cls.__name__,
|
||||
|
||||
Reference in New Issue
Block a user