diff --git a/odoo/addons/base/models/ir_model.py b/odoo/addons/base/models/ir_model.py index 7d7a93d7f87..76477936439 100644 --- a/odoo/addons/base/models/ir_model.py +++ b/odoo/addons/base/models/ir_model.py @@ -308,7 +308,7 @@ class IrModel(models.Model): # clean up registry first custom_models = [name for name, model_class in self.pool.items() if model_class._custom] for name in custom_models: - del self.pool.models[name] + del self.pool[name] # add manual models cr = self.env.cr cr.execute('SELECT * FROM ir_model WHERE state=%s', ['manual']) diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py index dc03d0b24d3..ddb1631ec51 100644 --- a/odoo/modules/registry.py +++ b/odoo/modules/registry.py @@ -183,6 +183,13 @@ class Registry(Mapping): """ Add or replace a model in the registry.""" self.models[model_name] = model + def __delitem__(self, model_name): + """ Remove a (custom) model from the registry. """ + del self.models[model_name] + # the custom model can inherit from mixins ('mail.thread', ...) + for Model in self.models.values(): + Model._inherit_children.discard(model_name) + def descendants(self, model_names, *kinds): """ Return the models corresponding to ``model_names`` and all those that inherit/inherits from them.