diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index c50044d3ff99eab972857f2253d354e701e17cd1..96819f918dcb41a06cb9c48d7516a6e94bb9d0d2 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -62,6 +62,13 @@ def _in_modules(self, cr, uid, ids, field_name, arg, context=None): result[k] = ', '.join(sorted(installed_modules & set(xml_id.split('.')[0] for xml_id in v))) return result +class unknown(models.AbstractModel): + """ + Abstract model used as a substitute for relational fields with an unknown + comodel. + """ + _name = '_unknown' + class ir_model(osv.osv): _name = 'ir.model' _description = "Models" diff --git a/openerp/fields.py b/openerp/fields.py index 88a6fe8ef5f322140735c1ab480713c7f82c8ecc..df9cb9a3f36efa32ea00fa2944c1caef9c17aace 100644 --- a/openerp/fields.py +++ b/openerp/fields.py @@ -1372,8 +1372,10 @@ class _Relational(Field): def _setup(self, env): super(_Relational, self)._setup(env) - assert self.comodel_name in env.registry, \ - "Field %s with unknown comodel_name %r" % (self, self.comodel_name) + if self.comodel_name not in env.registry: + _logger.warning("Field %s with unknown comodel_name %r" + % (self, self.comodel_name)) + self.comodel_name = '_unknown' @property def _related_domain(self):