summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Torres <adt@odoo.com>2017-12-11 10:43:48 +0000
committerGitHub <noreply@github.com>2017-12-11 10:43:48 +0000
commitb7ce07ad2ac6075715c2e53358af29be61be71ed (patch)
treee53a6cca74b54767691a73530474ebf5c8b43fee
parenta1c5af25560fa167010e88249f75c7a993d4a8f4 (diff)
[FIX] website, mass_mailing: same field defined twice (#21503)
The ORM does not currently, an probably won't support two fields with the same name in different modules that do not depend on each other. This is obviously a nasty hack, but it's the best one can do for a stable branch. THIS IS WHY WE HAVE DEPENDENCY MODULES, PEOPLE.
-rw-r--r--addons/mass_mailing/models/__init__.py1
-rw-r--r--addons/mass_mailing/models/ir_model_fields.py30
-rw-r--r--addons/website/models/__init__.py1
-rw-r--r--addons/website/models/ir_model_fields.py30
4 files changed, 62 insertions, 0 deletions
diff --git a/addons/mass_mailing/models/__init__.py b/addons/mass_mailing/models/__init__.py
index d5ba2d6d240..3fc7c41aac4 100644
--- a/addons/mass_mailing/models/__init__.py
+++ b/addons/mass_mailing/models/__init__.py
@@ -9,3 +9,4 @@ from . import res_config_settings
from . import mass_mailing_report
from . import link_tracker
from . import res_company
+from . import ir_model_fields
diff --git a/addons/mass_mailing/models/ir_model_fields.py b/addons/mass_mailing/models/ir_model_fields.py
new file mode 100644
index 00000000000..1e963bf650e
--- /dev/null
+++ b/addons/mass_mailing/models/ir_model_fields.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details
+
+from odoo import api, models
+
+
+# This is a nasty hack, targeted for V11 only
+class IrModelFields(models.Model):
+ _inherit = 'ir.model.fields'
+
+ @api.multi
+ def unlink(self):
+ # Prevent the deletion of social_* fields defined in res.company if
+ # the other module is installed
+ social = (
+ 'social_facebook',
+ 'social_github',
+ 'social_googleplus',
+ 'social_linkedin',
+ 'social_twitter',
+ 'social_youtube',
+ )
+
+ self = self.filtered(
+ lambda rec: not (
+ rec.model == 'res.company' and
+ rec.name in social
+ )
+ )
+ return super(IrModelFields, self).unlink()
diff --git a/addons/website/models/__init__.py b/addons/website/models/__init__.py
index 48ab2e710f6..7f9660011c8 100644
--- a/addons/website/models/__init__.py
+++ b/addons/website/models/__init__.py
@@ -11,3 +11,4 @@ from . import res_company
from . import res_partner
from . import web_planner
from . import res_config_settings
+from . import ir_model_fields
diff --git a/addons/website/models/ir_model_fields.py b/addons/website/models/ir_model_fields.py
new file mode 100644
index 00000000000..1e963bf650e
--- /dev/null
+++ b/addons/website/models/ir_model_fields.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details
+
+from odoo import api, models
+
+
+# This is a nasty hack, targeted for V11 only
+class IrModelFields(models.Model):
+ _inherit = 'ir.model.fields'
+
+ @api.multi
+ def unlink(self):
+ # Prevent the deletion of social_* fields defined in res.company if
+ # the other module is installed
+ social = (
+ 'social_facebook',
+ 'social_github',
+ 'social_googleplus',
+ 'social_linkedin',
+ 'social_twitter',
+ 'social_youtube',
+ )
+
+ self = self.filtered(
+ lambda rec: not (
+ rec.model == 'res.company' and
+ rec.name in social
+ )
+ )
+ return super(IrModelFields, self).unlink()