KERNEL: remove old inheritor and add _constraints and _sql_constraints to the fields inherited

bzr revid: ced-8b70c7c1adcf4991f2e1a449fc00e5066e414cbe
This commit is contained in:
ced 2007-04-12 10:49:31 +00:00
parent 88baca3679
commit fca8e731d1
1 changed files with 26 additions and 22 deletions

View File

@ -169,22 +169,23 @@ class osv_pool(netsvc.Service):
#
# See if we can use the pool var instead of the class_pool one
#
class inheritor(type):
def __new__(cls, name, bases, d):
parent_name = d.get('_inherit', None)
if parent_name:
parent_class = class_pool.get(parent_name)
assert parent_class, "parent class %s does not exist !" % parent_name
for s in ('_columns', '_defaults', '_inherits'):
new_dict = copy.copy(getattr(parent_class, s))
new_dict.update(d.get(s, {}))
d[s] = new_dict
bases = (parent_class,)
res = type.__new__(cls, name, bases, d)
#
# update _inherits of others objects
#
return res
# XXX no more used
#class inheritor(type):
# def __new__(cls, name, bases, d):
# parent_name = d.get('_inherit', None)
# if parent_name:
# parent_class = class_pool.get(parent_name)
# assert parent_class, "parent class %s does not exist !" % parent_name
# for s in ('_columns', '_defaults', '_inherits'):
# new_dict = copy.copy(getattr(parent_class, s))
# new_dict.update(d.get(s, {}))
# d[s] = new_dict
# bases = (parent_class,)
# res = type.__new__(cls, name, bases, d)
# #
# # update _inherits of others objects
# #
# return res
@ -213,17 +214,20 @@ class osv(orm.orm):
if parent_name:
parent_class = pool.get(parent_name).__class__
assert parent_class, "parent class %s does not exist !" % parent_name
ndict = {}
for s in ('_columns', '_defaults', '_inherits'):
new_dict = copy.copy(getattr(pool.get(parent_name), s))
new_dict.update(cls.__dict__.get(s, {}))
ndict[s] = new_dict
nattr = {}
for s in ('_columns', '_defaults', '_inherits', '_constraints', '_sql_constraints'):
new = copy.copy(getattr(pool.get(parent_name), s))
if hasattr(new, 'update'):
new.update(cls.__dict__.get(s, {}))
else:
new.extend(cls.__dict__.get(s, []))
nattr[s] = new
#bases = (parent_class,)
#obj.__class__ += (parent_class,)
#res = type.__new__(cls, name, bases, d)
name = hasattr(cls,'_name') and cls._name or cls._inherit
#name = str(cls)
cls = type(name, (cls, parent_class), ndict)
cls = type(name, (cls, parent_class), nattr)
obj = object.__new__(cls)
obj.__init__(pool)