diff options
| author | Adrian Torres <adt@odoo.com> | 2017-12-11 10:43:48 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-12-11 10:43:48 +0000 |
| commit | b7ce07ad2ac6075715c2e53358af29be61be71ed (patch) | |
| tree | e53a6cca74b54767691a73530474ebf5c8b43fee | |
| parent | a1c5af25560fa167010e88249f75c7a993d4a8f4 (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__.py | 1 | ||||
| -rw-r--r-- | addons/mass_mailing/models/ir_model_fields.py | 30 | ||||
| -rw-r--r-- | addons/website/models/__init__.py | 1 | ||||
| -rw-r--r-- | addons/website/models/ir_model_fields.py | 30 |
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() |
