From 66d9dce9b6e6e65000ba0b62efcb153f2d3eec15 Mon Sep 17 00:00:00 2001 From: Arnold Moyaux <arm@odoo.com> Date: Tue, 16 Feb 2021 14:47:25 +0000 Subject: [PATCH] [FIX] mrp, mrp_subcontracting: traceback during unistall The unlink fail in __init__.py uninstall hook is managed, however when it fail, the error is catch but the cursor is not rollback and do not accept additional transaction. That result in a traceback at uninstall. opw-2453939 closes odoo/odoo#66278 Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com> --- addons/mrp/__init__.py | 5 +++-- addons/mrp_subcontracting/__init__.py | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/mrp/__init__.py b/addons/mrp/__init__.py index f2aacb129c76..e3fc61aab29b 100644 --- a/addons/mrp/__init__.py +++ b/addons/mrp/__init__.py @@ -37,12 +37,13 @@ def _create_warehouse_data(cr, registry): def uninstall_hook(cr, registry): env = api.Environment(cr, SUPERUSER_ID, {}) warehouses = env["stock.warehouse"].search([]) - subcontracting_routes = warehouses.mapped("pbm_route_id") + pbm_routes = warehouses.mapped("pbm_route_id") warehouses.write({"pbm_route_id": False}) # Fail unlink means that the route is used somewhere (e.g. route_id on stock.rule). In this case # we don't try to do anything. try: - subcontracting_routes.unlink() + with env.cr.savepoint(): + pbm_routes.unlink() except: pass diff --git a/addons/mrp_subcontracting/__init__.py b/addons/mrp_subcontracting/__init__.py index 276d3a48dbfd..abbc8a489ee4 100644 --- a/addons/mrp_subcontracting/__init__.py +++ b/addons/mrp_subcontracting/__init__.py @@ -14,6 +14,7 @@ def uninstall_hook(cr, registry): # Fail unlink means that the route is used somewhere (e.g. route_id on stock.rule). In this case # we don't try to do anything. try: - subcontracting_routes.unlink() + with env.cr.savepoint(): + subcontracting_routes.unlink() except: pass -- GitLab