summaryrefslogtreecommitdiff
path: root/addons/website_quote/models
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-10-18 14:34:32 +0200
committerChristophe Simonis <chs@odoo.com>2017-10-18 14:34:32 +0200
commita01e76efa71d4db2fa9de0095d13bdfc359f91f0 (patch)
tree87203bc32cbf3d0ef4b794f72b22065f62b5c7f9 /addons/website_quote/models
parent727a642f5c72ee34e9d6f3c7a507591d05d7d839 (diff)
parent2198220947e4334aba85e782665870ff37ea7736 (diff)
[MERGE] forward port branch 10.0 up to 2198220947e
Diffstat (limited to 'addons/website_quote/models')
-rw-r--r--addons/website_quote/models/__init__.py1
-rw-r--r--addons/website_quote/models/ir_model_fields.py35
2 files changed, 36 insertions, 0 deletions
diff --git a/addons/website_quote/models/__init__.py b/addons/website_quote/models/__init__.py
index 011bafd821f..a83051f5a10 100644
--- a/addons/website_quote/models/__init__.py
+++ b/addons/website_quote/models/__init__.py
@@ -4,3 +4,4 @@
import sale_order
import sale_quote
import product_template
+import ir_model_fields
diff --git a/addons/website_quote/models/ir_model_fields.py b/addons/website_quote/models/ir_model_fields.py
new file mode 100644
index 00000000000..55643edfe0d
--- /dev/null
+++ b/addons/website_quote/models/ir_model_fields.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, models
+
+# !! Attention, this is a hack of a hack, do not try this at home !!
+# This is done because website_quote defines the website_description
+# field which is also defined by website_sale, but these two modules
+# are independent of each other, the part of the ORM that generates
+# xmlids does not support this case therefore it only creates a single
+# pair of xmlids for whichever module is installed first, therefore
+# when uninstalling any of the two modules the website_descripion field
+# will be deleted from the db and the other module won't be able to
+# use this field, resulting in a crash and data-loss.
+# See opw-776464 for more details.
+#
+# This is hotfixed by overriding the unlink method so as to not delete
+# the website_description field if website_quote is uninstalled, it's
+# an ugly hack but it works and big changes can't be done to the ORM
+# in stable versions, Odoo v12+ will properly fix this
+
+
+class IrModelFields(models.Model):
+ _inherit = "ir.model.fields"
+
+ @api.multi
+ def unlink(self):
+ # Prevent the deletion of the field "website_description"
+ self = self.filtered(
+ lambda rec: not (
+ rec.model in ('product.product', 'product.template') and
+ rec.name == 'website_description'
+ )
+ )
+ return super(IrModelFields, self).unlink()