[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
This commit is contained in:
Adrian Torres
2017-11-21 11:13:24 +01:00
committed by GitHub
parent 0831610d6a
commit 31ba0fb41b
+8
View File
@@ -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