diff --git a/addons/auth_signup/models/__init__.py b/addons/auth_signup/models/__init__.py index 44dc1ee6b11..a25160266e7 100644 --- a/addons/auth_signup/models/__init__.py +++ b/addons/auth_signup/models/__init__.py @@ -4,3 +4,4 @@ from . import res_config_settings from . import ir_http from . import res_partner from . import res_users +from . import ir_model_fields diff --git a/addons/auth_signup/models/ir_model_fields.py b/addons/auth_signup/models/ir_model_fields.py new file mode 100644 index 00000000000..828b9de8346 --- /dev/null +++ b/addons/auth_signup/models/ir_model_fields.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details + +from odoo import models + + +# This is a nasty hack, targeted for V11 only +class IrModelFields(models.Model): + _inherit = 'ir.model.fields' + + def unlink(self): + # Prevent the deletion of some `shared` fields... -_- + self = self.filtered( + lambda rec: not ( + rec.model == 'res.config.settings' + and rec.name == 'auth_signup_uninvited' + ) + ) + return super(IrModelFields, self).unlink() diff --git a/addons/sale/models/__init__.py b/addons/sale/models/__init__.py index 5f6e7ba2857..7a157566790 100644 --- a/addons/sale/models/__init__.py +++ b/addons/sale/models/__init__.py @@ -12,3 +12,4 @@ from . import sale from . import res_config_settings from . import sale_layout from . import sales_team +from . import ir_model_fields diff --git a/addons/sale/models/ir_model_fields.py b/addons/sale/models/ir_model_fields.py new file mode 100644 index 00000000000..828b9de8346 --- /dev/null +++ b/addons/sale/models/ir_model_fields.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details + +from odoo import models + + +# This is a nasty hack, targeted for V11 only +class IrModelFields(models.Model): + _inherit = 'ir.model.fields' + + def unlink(self): + # Prevent the deletion of some `shared` fields... -_- + self = self.filtered( + lambda rec: not ( + rec.model == 'res.config.settings' + and rec.name == 'auth_signup_uninvited' + ) + ) + return super(IrModelFields, self).unlink() diff --git a/addons/website/models/ir_model_fields.py b/addons/website/models/ir_model_fields.py index 1e963bf650e..51f5c2a7dc5 100644 --- a/addons/website/models/ir_model_fields.py +++ b/addons/website/models/ir_model_fields.py @@ -1,17 +1,15 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details -from odoo import api, models +from odoo import 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 + # Prevent the deletion of some `shared` fields... -_- social = ( 'social_facebook', 'social_github', @@ -23,8 +21,9 @@ class IrModelFields(models.Model): self = self.filtered( lambda rec: not ( - rec.model == 'res.company' and - rec.name in social + (rec.model == 'res.company' and rec.name in social) + or (rec.model == 'res.config.settings' + and rec.name == 'auth_signup_uninvited') ) ) return super(IrModelFields, self).unlink()