diff --git a/bin/osv/osv.py b/bin/osv/osv.py index 7d85ae363a9..3847caea5b2 100644 --- a/bin/osv/osv.py +++ b/bin/osv/osv.py @@ -192,20 +192,21 @@ class osv_memory(orm.orm_memory): # def createInstance(cls, pool, module, cr): name = hasattr(cls, '_name') and cls._name or cls._inherit - parent_name = hasattr(cls, '_inherit') and cls._inherit - if parent_name: - parent_class = pool.get(parent_name).__class__ - assert pool.get(parent_name), "parent class %s does not exist in module %s !" % (parent_name, module) - nattr = {} - for s in ('_columns', '_defaults'): - 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 - name = hasattr(cls, '_name') and cls._name or cls._inherit - cls = type(name, (cls, parent_class), nattr) + parent_names = hasattr(cls, '_inherit') and cls._inherit + if parent_names: + for parent_name in ((type(parent_names)==list) and parent_names or [parent_names]): + parent_class = pool.get(parent_name).__class__ + assert pool.get(parent_name), "parent class %s does not exist in module %s !" % (parent_name, module) + nattr = {} + for s in ('_columns', '_defaults'): + 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 + name = hasattr(cls, '_name') and cls._name or cls._inherit + cls = type(name, (cls, parent_class), nattr) obj = object.__new__(cls) obj.__init__(pool, cr)