[FIX] osv: _name is mandatory in case of multiple inheritance
bzr revid: chs@tinyerp.com-20100112125216-efd42e6j5np34u7z
This commit is contained in:
parent
3a023ca1e4
commit
e5af7c9c73
|
@ -197,6 +197,14 @@ class osv_memory(osv_base, orm.orm_memory):
|
||||||
def createInstance(cls, pool, module, cr):
|
def createInstance(cls, pool, module, cr):
|
||||||
parent_names = getattr(cls, '_inherit', None)
|
parent_names = getattr(cls, '_inherit', None)
|
||||||
if parent_names:
|
if parent_names:
|
||||||
|
if isinstance(parent_names, (str, unicode)):
|
||||||
|
name = cls._name or parent_name
|
||||||
|
parent_names = [parent_names]
|
||||||
|
else:
|
||||||
|
name = cls._name
|
||||||
|
if not name:
|
||||||
|
raise TypeError('_name is mandatory in case of multiple inheritance')
|
||||||
|
|
||||||
for parent_name in ((type(parent_names)==list) and parent_names or [parent_names]):
|
for parent_name in ((type(parent_names)==list) and parent_names or [parent_names]):
|
||||||
parent_class = pool.get(parent_name).__class__
|
parent_class = pool.get(parent_name).__class__
|
||||||
assert pool.get(parent_name), "parent class %s does not exist in module %s !" % (parent_name, module)
|
assert pool.get(parent_name), "parent class %s does not exist in module %s !" % (parent_name, module)
|
||||||
|
@ -208,7 +216,6 @@ class osv_memory(osv_base, orm.orm_memory):
|
||||||
else:
|
else:
|
||||||
new.extend(cls.__dict__.get(s, []))
|
new.extend(cls.__dict__.get(s, []))
|
||||||
nattr[s] = new
|
nattr[s] = new
|
||||||
name = cls._name or cls._inherit
|
|
||||||
cls = type(name, (cls, parent_class), nattr)
|
cls = type(name, (cls, parent_class), nattr)
|
||||||
|
|
||||||
obj = object.__new__(cls)
|
obj = object.__new__(cls)
|
||||||
|
@ -224,6 +231,14 @@ class osv(osv_base, orm.orm):
|
||||||
def createInstance(cls, pool, module, cr):
|
def createInstance(cls, pool, module, cr):
|
||||||
parent_names = getattr(cls, '_inherit', None)
|
parent_names = getattr(cls, '_inherit', None)
|
||||||
if parent_names:
|
if parent_names:
|
||||||
|
if isinstance(parent_names, (str, unicode)):
|
||||||
|
name = cls._name or parent_name
|
||||||
|
parent_names = [parent_names]
|
||||||
|
else:
|
||||||
|
name = cls._name
|
||||||
|
if not name:
|
||||||
|
raise TypeError('_name is mandatory in case of multiple inheritance')
|
||||||
|
|
||||||
for parent_name in ((type(parent_names)==list) and parent_names or [parent_names]):
|
for parent_name in ((type(parent_names)==list) and parent_names or [parent_names]):
|
||||||
parent_class = pool.get(parent_name).__class__
|
parent_class = pool.get(parent_name).__class__
|
||||||
assert pool.get(parent_name), "parent class %s does not exist in module %s !" % (parent_name, module)
|
assert pool.get(parent_name), "parent class %s does not exist in module %s !" % (parent_name, module)
|
||||||
|
@ -246,7 +261,6 @@ class osv(osv_base, orm.orm):
|
||||||
else:
|
else:
|
||||||
new.extend(cls.__dict__.get(s, []))
|
new.extend(cls.__dict__.get(s, []))
|
||||||
nattr[s] = new
|
nattr[s] = new
|
||||||
name = cls._name or cls._inherit
|
|
||||||
cls = type(name, (cls, parent_class), nattr)
|
cls = type(name, (cls, parent_class), nattr)
|
||||||
obj = object.__new__(cls)
|
obj = object.__new__(cls)
|
||||||
obj.__init__(pool, cr)
|
obj.__init__(pool, cr)
|
||||||
|
|
Loading…
Reference in New Issue