diff --git a/bemade_mailcow_integration/__manifest__.py b/bemade_mailcow_integration/__manifest__.py index 14c39bb..b54ee6a 100644 --- a/bemade_mailcow_integration/__manifest__.py +++ b/bemade_mailcow_integration/__manifest__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- { 'name': 'Mailcow Integration', - 'version': '1.0.0', + 'version': '15.0.1.0.1', 'category': 'Administration', 'summary': 'Module for integrating Mailcow email server with Odoo.', 'description': """ diff --git a/bemade_mailcow_integration/migrations/15.0.1.0.1/pre-migrate.py b/bemade_mailcow_integration/migrations/15.0.1.0.1/pre-migrate.py new file mode 100644 index 0000000..451c1c0 --- /dev/null +++ b/bemade_mailcow_integration/migrations/15.0.1.0.1/pre-migrate.py @@ -0,0 +1,13 @@ +from odoo import api, SUPERUSER_ID + + +def migrate(cr, version): + env = api.Environment(cr, SUPERUSER_ID, {}) + settings = env['ir.config_parameter'] + create_param = settings.get_param('mailcow.create_mailbox') + sync_param = settings.get_param('mailcow.sync_alias') + base_url = settings.get_param('mailcow.base_url') + api_key = settings.get_param('mailcow.api_key') + + if (create_param or sync_param) and (not base_url or not api_key): + (create_param | sync_param).write({'value': False}) diff --git a/bemade_mailcow_integration/models/mail_alias.py b/bemade_mailcow_integration/models/mail_alias.py index 2a69a78..62c466e 100644 --- a/bemade_mailcow_integration/models/mail_alias.py +++ b/bemade_mailcow_integration/models/mail_alias.py @@ -8,8 +8,12 @@ class MailAlias(models.Model): @api.model def create(self, vals): + params = self.env['ir.config_parameter'].sudo() + param_auto_create = params.get_param('mailcow.create_mailbox') + alias = super(MailAlias, self).create(vals) - if not alias.alias_name: + + if not alias.alias_name or not param_auto_create: return alias alias_domain = self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain"), diff --git a/bemade_mailcow_integration/models/res_config_settings.py b/bemade_mailcow_integration/models/res_config_settings.py index e0b47e5..bd5db68 100644 --- a/bemade_mailcow_integration/models/res_config_settings.py +++ b/bemade_mailcow_integration/models/res_config_settings.py @@ -1,4 +1,6 @@ -from odoo import fields, models +from odoo import fields, models, api, _ +from odoo.exceptions import ValidationError + class ResConfigSettings(models.TransientModel): _inherit = 'res.config.settings' @@ -23,3 +25,8 @@ class ResConfigSettings(models.TransientModel): string='Create Mailboxes in Mailcow', help='Auto create Mailboxes in Mailcow on creation in Odoo', config_parameter='mailcow.create_mailbox') + + @api.constrains('mailcow_sync_alias', 'mailcow_auto_create') + def require_api_key_and_base_url_to_sync(self): + if not self.mailcow_api_key and self.mailcow_base_url: + raise ValidationError(_("You must set a base URL and API key to enable synchronization."))