From c8c30b0743028a8f2b696028dbc8a9a21b807abe Mon Sep 17 00:00:00 2001 From: Arnold Moyaux 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#66309 X-original-commit: 66d9dce9b6e6e65000ba0b62efcb153f2d3eec15 Signed-off-by: Arnold Moyaux --- 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 4b42606f105..10789d49666 100644 --- a/addons/mrp/__init__.py +++ b/addons/mrp/__init__.py @@ -31,12 +31,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 276d3a48dbf..abbc8a489ee 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