summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Torres <adt@odoo.com>2017-11-21 11:13:24 +0100
committerGitHub <noreply@github.com>2017-11-21 11:13:24 +0100
commit31ba0fb41b5b468558e10acff096dfbbf2b720cd (patch)
tree64a41a153ed351b7ce2454de68285c9515ce9ce2
parent0831610d6af8835c25102c04295096594e9d4907 (diff)
[FIX] ir_module_module: unlink uninstalled modules (#21111)
Before this revision, unlinking a module which has been uninstalled at least once would raise an Exception because base_module_uninstall contains a field model_id which is required. The unlink method of ir_module_module would try to set this field to NULL which is of course a constraint violation. This is fixed by manually unlinking the respective base_module_uninstall records before the unlinking of the ir_module_module record itself Fixes #20720 DO NOT FORWARD-PORT
-rw-r--r--odoo/addons/base/module/module.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/odoo/addons/base/module/module.py b/odoo/addons/base/module/module.py
index 920929a14d2..6fe4bbf525e 100644
--- a/odoo/addons/base/module/module.py
+++ b/odoo/addons/base/module/module.py
@@ -305,6 +305,14 @@ class Module(models.Model):
if module.state in ('installed', 'to upgrade', 'to remove', 'to install'):
raise UserError(_('You try to remove a module that is installed or will be installed'))
self.clear_caches()
+ # Installing a module creates entries in base.module.uninstall, during
+ # the unlink process of ir.module.module we try to update the
+ # base.module.uninstall table's module_id to null, which violates a
+ # non-null constraint, effectively raising an Exception.
+ # V11-only !!DO NOT FORWARD-PORT!!
+ self.env['base.module.uninstall'].search(
+ [('module_id', 'in', self.ids)]
+ ).unlink()
return super(Module, self).unlink()
@staticmethod