fix most mailcow issue
This commit is contained in:
parent
6405e7fdfc
commit
281eb2f13d
6 changed files with 30 additions and 25 deletions
|
|
@ -40,7 +40,6 @@
|
|||
"bemade_mailcow_integration/static/src/xml/mailcow_templates.xml",
|
||||
],
|
||||
},
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
'application': False,
|
||||
'auto_install': False
|
||||
|
|
|
|||
|
|
@ -16,15 +16,14 @@ class MailAlias(models.Model):
|
|||
alias_domain = alias_domain[0]
|
||||
catchall_alias = catchall_alias[0]
|
||||
|
||||
if not alias_domain:
|
||||
raise ValidationError(_("No catchall domain is set in the system parameters. Please set one and try again."))
|
||||
mailcow_alias = self.env['mail.mailcow.alias'].search([('address', '=', alias.alias_name + '@' + alias_domain)])
|
||||
if mailcow_alias:
|
||||
mailcow_alias.write({'active': True})
|
||||
else:
|
||||
self.env['mail.mailcow.alias'].create({
|
||||
'address': alias.alias_name + '@' + alias_domain,
|
||||
'goto': catchall_alias + '@' + alias_domain,
|
||||
'alias_id': alias.id,
|
||||
})
|
||||
if alias_domain:
|
||||
mailcow_alias = self.env['mail.mailcow.alias'].search([('address', '=', alias.alias_name + '@' + alias_domain)])
|
||||
if mailcow_alias:
|
||||
mailcow_alias.write({'active': True})
|
||||
else:
|
||||
self.env['mail.mailcow.alias'].create({
|
||||
'address': alias.alias_name + '@' + alias_domain,
|
||||
'goto': catchall_alias + '@' + alias_domain,
|
||||
'alias_id': alias.id,
|
||||
})
|
||||
return alias
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ class MailMailcow(models.AbstractModel):
|
|||
def get_credentials(self):
|
||||
params = self.env['ir.config_parameter'].sudo()
|
||||
|
||||
base_url = params.get_param('mailcow.base_url')[0],
|
||||
api_key = params.get_param('mailcow.api_key')[0],
|
||||
base_url = params.get_param('mailcow.base_url')
|
||||
api_key = params.get_param('mailcow.api_key')
|
||||
|
||||
if not base_url or not api_key:
|
||||
_logger.error('No API key or base URL is set in the system parameters')
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
from odoo import models, fields, api
|
||||
import logging
|
||||
import json
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -28,17 +29,14 @@ class MailcowBlacklist(models.Model):
|
|||
'object_list': 'bl'
|
||||
}
|
||||
|
||||
|
||||
|
||||
self.api_request(endpoint_add, 'POST', data)
|
||||
_logger.info(f'Added {vals["email"]} to Mailcow blacklist')
|
||||
|
||||
allblemail = self.api_request(endpoint_get_bl, 'GET', None)
|
||||
bl_emails = self.api_request(endpoint_get_bl, 'GET', None)
|
||||
|
||||
mc_id = [d['prefid'] for d in allblemail if d['value'] == vals['email']]
|
||||
mc_id = [d['prefid'] for d in bl_emails if d['value'] == vals['email']]
|
||||
vals['mc_id'] = mc_id[0]
|
||||
res = super().create(vals)
|
||||
|
||||
return res
|
||||
|
||||
def write(self, vals):
|
||||
|
|
@ -65,13 +63,10 @@ class MailcowBlacklist(models.Model):
|
|||
"""
|
||||
Overridden unlink method to remove the blacklist entry from the Mailcow server.
|
||||
"""
|
||||
endpoint = '/api/v1/delete/domain-policy'
|
||||
for record in self:
|
||||
endpoint = '/api/v1/delete/domain-policy'
|
||||
data = {
|
||||
'items': [record.mc_id]
|
||||
}
|
||||
result = record.api_request(endpoint, 'POST', data)
|
||||
print(result)
|
||||
data = json.dumps(record.mc_id)
|
||||
self.api_request(endpoint, 'POST', data)
|
||||
_logger.info(f'Removed {record.email} from Mailcow blacklist')
|
||||
return super().unlink()
|
||||
|
||||
|
|
|
|||
|
|
@ -13,3 +13,8 @@ class ResConfigSettings(models.TransientModel):
|
|||
help="API key for the Mailcow server",
|
||||
config_parameter='mailcow.api_key',
|
||||
)
|
||||
|
||||
mailcow_sync_alias = fields.Boolean(
|
||||
string='Sync Aliases with Odoo',
|
||||
help='Auto create Aliases in Mailcow from Odoo',
|
||||
config_parameter='mailcow.sync_alias')
|
||||
|
|
@ -24,6 +24,13 @@
|
|||
<div class="content-group">
|
||||
<field name="mailcow_api_key"/>
|
||||
</div>
|
||||
<label for="mailcow_sync_alias" string="Sync Aliases with Odoo'"/>
|
||||
<div class="text-muted">
|
||||
Auto create Aliases in Mailcow from Odoo
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<field name="mailcow_sync_alias"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in a new issue