diff options
| author | Ivan Yelizariev <iel@odoo.com> | 2021-03-26 13:11:10 +0000 |
|---|---|---|
| committer | Ivan Yelizariev <iel@odoo.com> | 2021-04-14 15:34:50 +0000 |
| commit | f66fc7b9c410e60ab08ccb3882d39631e4d1eccc (patch) | |
| tree | ff94bde16a3d9b6e8812d2b5c02595dc8c528885 /addons | |
| parent | 9b45e7f5749dc86e9fa3c0b4ebc7de700774923a (diff) | |
[FIX] sale_timesheet: speed up computing is_service on installation
on large database module installation may be aborted because of timeout error.
---
opw-2475335
closes odoo/odoo#69260
X-original-commit: 982ac9f5df2bd0e41b39f9be42a42dab4fe8153c
Signed-off-by: Adrian Torres (adt) <adt@odoo.com>
Signed-off-by: Ivan Yelizariev // IEL <yelizariev@users.noreply.github.com>
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/sale_project/models/sale_order.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/addons/sale_project/models/sale_order.py b/addons/sale_project/models/sale_order.py index f974dbefabe..6659e4f1b2a 100644 --- a/addons/sale_project/models/sale_order.py +++ b/addons/sale_project/models/sale_order.py @@ -4,6 +4,7 @@ from odoo import api, fields, models, _ from odoo.tools.safe_eval import safe_eval +from odoo.tools.sql import column_exists, create_column class SaleOrder(models.Model): @@ -134,6 +135,21 @@ class SaleOrderLine(models.Model): else: super(SaleOrderLine, line)._compute_product_updatable() + def _auto_init(self): + """ + Create column to stop ORM from computing it himself (too slow) + """ + if not column_exists(self.env.cr, 'sale_order_line', 'is_service'): + create_column(self.env.cr, 'sale_order_line', 'is_service', 'bool') + self.env.cr.execute(""" + UPDATE sale_order_line line + SET is_service = (pt.type = 'service') + FROM product_product pp + LEFT JOIN product_template pt ON pt.id = pp.product_tmpl_id + WHERE pp.id = line.product_id + """) + return super()._auto_init() + @api.model_create_multi def create(self, vals_list): lines = super().create(vals_list) |
