[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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user