From 97e8a98852f755825c7ba957652a2617d0ac29c4 Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Wed, 21 Dec 2022 17:48:24 +0100 Subject: [PATCH] Use SQL in post_init_hook to avoid potential Memory error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Iván Todorovich --- mrp_workorder_sequence/hooks.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/mrp_workorder_sequence/hooks.py b/mrp_workorder_sequence/hooks.py index 52e2f89e4..c080cb29f 100644 --- a/mrp_workorder_sequence/hooks.py +++ b/mrp_workorder_sequence/hooks.py @@ -1,11 +1,19 @@ # Copyright 2022 Camptocamp SA # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) -from odoo import SUPERUSER_ID, api, tools def post_init_hook(cr, registry): - env = api.Environment(cr, SUPERUSER_ID, {}) - all_workorders = env["mrp.workorder"].search([], order="production_id ASC, id ASC") - for _, workorders in tools.groupby(all_workorders, lambda w: w.production_id): - for seq, wo in enumerate(workorders, 1): - wo.sequence = seq + cr.execute( + """ + UPDATE mrp_workorder + SET sequence = n.sequence + FROM ( + SELECT + id, + ROW_NUMBER() OVER (PARTITION BY production_id) AS sequence + FROM mrp_workorder + ORDER BY production_id, id + ) AS n + WHERE mrp_workorder.id = n.id + """ + )