summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorIvan Yelizariev <iel@odoo.com>2021-03-26 13:11:10 +0000
committerIvan Yelizariev <iel@odoo.com>2021-04-14 15:34:50 +0000
commitf66fc7b9c410e60ab08ccb3882d39631e4d1eccc (patch)
treeff94bde16a3d9b6e8812d2b5c02595dc8c528885 /addons
parent9b45e7f5749dc86e9fa3c0b4ebc7de700774923a (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.py16
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)