Merge pull request #7 from simahawk/11.0-mig-mail_environment
[11.0][MIG] mail_environment
This commit is contained in:
commit
80813dea95
|
|
@ -0,0 +1,117 @@
|
|||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
|
||||
==========================================
|
||||
Mail configuration with server_environment
|
||||
==========================================
|
||||
|
||||
This module allows to configure the incoming and outgoing mail servers
|
||||
using the `server_environment` mechanism: you can then have different
|
||||
mail servers for the production and the test environment.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
To install this module, you need to have the server_environment module
|
||||
installed and properly configured.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
With this module installed, the incoming and outgoing mail servers are
|
||||
configured in the `server_environment_files` module (which is a module
|
||||
you should provide, see the documentation of `server_environment` for
|
||||
more information).
|
||||
|
||||
In the configuration file of each environment, you may first use the
|
||||
sections `[outgoing_mail]` and `[incoming_mail]` to configure the
|
||||
default values respectively for SMTP servers and the IMAP/POP servers.
|
||||
|
||||
Then for each server, you can define additional values or override the
|
||||
default values with a section named `[outgoing_mail.resource_name]` or
|
||||
`[incoming_mail.resource_name]` where "resource_name" is the name of
|
||||
the server.
|
||||
|
||||
Example of config file ::
|
||||
|
||||
[outgoing_mail]
|
||||
smtp_host = smtp.myserver.com
|
||||
smtp_port = 587
|
||||
smtp_user =
|
||||
smtp_pass =
|
||||
smtp_encryption = ssl
|
||||
|
||||
[outgoing_mail.odoo_smtp_server1]
|
||||
smtp_user = odoo
|
||||
smtp_pass = odoo
|
||||
|
||||
[incoming_mail.odoo_pop_mail1]
|
||||
server = mail.myserver.com
|
||||
port = 110
|
||||
type = pop
|
||||
is_ssl = 0
|
||||
attach = 0
|
||||
original = 0
|
||||
user = odoo@myserver.com
|
||||
password = uas1ohV0
|
||||
|
||||
You will need to create 2 records in the database, one outgoing mail
|
||||
server with the field `name` set to "odoo_smtp_server1" and one
|
||||
incoming mail server with the field `name` set to "odoo_pop_mail1".
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
Once configured, Odoo will read the mail servers values from the
|
||||
configuration file related to each environment defined in the main
|
||||
Odoo file.
|
||||
|
||||
|
||||
Known issues / Roadmap
|
||||
======================
|
||||
|
||||
* Due to the special nature of this addon, you cannot test it on the OCA
|
||||
runbot.
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues
|
||||
<https://github.com/OCA/server-tools/issues>`_. In case of trouble, please
|
||||
check there if your issue has already been reported. If you spotted it first,
|
||||
help us smash it by providing a detailed and welcomed feedback.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Images
|
||||
------
|
||||
|
||||
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
* Nicolas Bessi <nicolas.bessi@camptocamp.com>
|
||||
* Yannick Vaucher <yannick.vaucher@camptocamp.com>
|
||||
* Guewen Baconnier <guewen.baconnier@camptocamp.com>
|
||||
* Joël Grand-Guillaume <joel.grandguillaume@camptocamp.com>
|
||||
* Holger Brunn <hbrunn@therp.nl>
|
||||
* Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
|
||||
|
||||
Maintainer
|
||||
----------
|
||||
|
||||
.. image:: https://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: https://odoo-community.org
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.
|
||||
|
||||
To contribute to this module, please visit https://odoo-community.org.
|
||||
|
|
@ -0,0 +1 @@
|
|||
from . import models
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Copyright 2012-2018 Camptocamp SA
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
{
|
||||
'name': 'Mail configuration with server_environment',
|
||||
'version': '11.0.1.0.0',
|
||||
'category': 'Tools',
|
||||
'summary': 'Configure mail servers with server_environment_files',
|
||||
'author': "Camptocamp, Odoo Community Association (OCA)",
|
||||
'license': 'AGPL-3',
|
||||
'website': 'https://github.com/OCA/server-env',
|
||||
'depends': [
|
||||
'fetchmail',
|
||||
'server_environment',
|
||||
],
|
||||
'data': [
|
||||
'views/fetchmail_server_views.xml',
|
||||
],
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * mail_environment
|
||||
#
|
||||
# Translators:
|
||||
# Rudolf Schnapka <rs@techno-flex.de>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (9.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-04-17 12:15+0000\n"
|
||||
"PO-Revision-Date: 2016-04-21 09:16+0000\n"
|
||||
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>\n"
|
||||
"Language-Team: German (http://www.transifex.com/oca/OCA-server-tools-9-0/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_fetchmail_server
|
||||
msgid "POP/IMAP Server"
|
||||
msgstr "POP/IMAP-Server"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_ir_mail_server
|
||||
msgid "ir.mail_server"
|
||||
msgstr "ir.mail_server"
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * mail_environment
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (9.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-02-27 01:37+0000\n"
|
||||
"PO-Revision-Date: 2016-02-26 16:14+0000\n"
|
||||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
|
||||
"Language-Team: English (http://www.transifex.com/oca/OCA-server-tools-9-0/language/en/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: en\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_fetchmail_server
|
||||
msgid "POP/IMAP Server"
|
||||
msgstr "POP/IMAP Server"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_ir_mail_server
|
||||
msgid "ir.mail_server"
|
||||
msgstr "ir.mail_server"
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * mail_environment
|
||||
#
|
||||
# Translators:
|
||||
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-05-01 10:38+0000\n"
|
||||
"PO-Revision-Date: 2017-05-01 10:38+0000\n"
|
||||
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2017\n"
|
||||
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_fetchmail_server
|
||||
msgid "POP/IMAP Server"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_ir_mail_server
|
||||
msgid "ir.mail_server"
|
||||
msgstr "ir.mail_server"
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * mail_environment
|
||||
#
|
||||
# Translators:
|
||||
# Bole <bole@dajmi5.com>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (9.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-06-29 00:48+0000\n"
|
||||
"PO-Revision-Date: 2016-06-14 10:58+0000\n"
|
||||
"Last-Translator: Bole <bole@dajmi5.com>\n"
|
||||
"Language-Team: Croatian (http://www.transifex.com/oca/OCA-server-tools-9-0/language/hr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: hr\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_fetchmail_server
|
||||
msgid "POP/IMAP Server"
|
||||
msgstr "POP/IMAP Server"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_ir_mail_server
|
||||
msgid "ir.mail_server"
|
||||
msgstr "ir.mail_server"
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * mail_environment
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (8.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-29 11:14+0000\n"
|
||||
"PO-Revision-Date: 2015-09-18 13:55+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-server-tools-8-0/language/pt_BR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_fetchmail_server
|
||||
msgid "POP/IMAP Server"
|
||||
msgstr "Servidor POP/IMAP"
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * mail_environment
|
||||
#
|
||||
# Translators:
|
||||
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (9.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-02-27 01:37+0000\n"
|
||||
"PO-Revision-Date: 2016-02-27 16:56+0000\n"
|
||||
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
|
||||
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-server-tools-9-0/language/sl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: sl\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_fetchmail_server
|
||||
msgid "POP/IMAP Server"
|
||||
msgstr "POP/IMAP strežnik"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_ir_mail_server
|
||||
msgid "ir.mail_server"
|
||||
msgstr "ir.mail_server"
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * mail_environment
|
||||
#
|
||||
# Translators:
|
||||
# Jeffery Chenn <jeffery9@gmail.com>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (9.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-08-31 11:58+0000\n"
|
||||
"PO-Revision-Date: 2016-09-04 06:08+0000\n"
|
||||
"Last-Translator: Jeffery Chenn <jeffery9@gmail.com>\n"
|
||||
"Language-Team: Chinese (China) (http://www.transifex.com/oca/OCA-server-tools-9-0/language/zh_CN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: zh_CN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_fetchmail_server
|
||||
msgid "POP/IMAP Server"
|
||||
msgstr "POP/IMAP 服务器"
|
||||
|
||||
#. module: mail_environment
|
||||
#: model:ir.model,name:mail_environment.model_ir_mail_server
|
||||
msgid "ir.mail_server"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
from . import ir_mail_server
|
||||
from . import fetchmail_server
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
# Copyright 2012-2018 Camptocamp SA
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
import operator
|
||||
from odoo import api, fields, models
|
||||
from odoo.addons.server_environment import serv_config
|
||||
|
||||
|
||||
class FetchmailServer(models.Model):
|
||||
"""Incoming POP/IMAP mail server account"""
|
||||
_inherit = 'fetchmail.server'
|
||||
|
||||
server = fields.Char(compute='_compute_server_env',
|
||||
states={})
|
||||
port = fields.Integer(compute='_compute_server_env',
|
||||
states={})
|
||||
type = fields.Selection(compute='_compute_server_env',
|
||||
search='_search_type',
|
||||
states={})
|
||||
user = fields.Char(compute='_compute_server_env',
|
||||
states={})
|
||||
password = fields.Char(compute='_compute_server_env',
|
||||
states={})
|
||||
is_ssl = fields.Boolean(compute='_compute_server_env')
|
||||
attach = fields.Boolean(compute='_compute_server_env')
|
||||
original = fields.Boolean(compute='_compute_server_env')
|
||||
|
||||
@api.depends()
|
||||
def _compute_server_env(self):
|
||||
for fetchmail in self:
|
||||
global_section_name = 'incoming_mail'
|
||||
|
||||
key_types = {'port': int,
|
||||
'is_ssl': lambda a: bool(int(a or 0)),
|
||||
'attach': lambda a: bool(int(a or 0)),
|
||||
'original': lambda a: bool(int(a or 0)),
|
||||
}
|
||||
|
||||
# default vals
|
||||
config_vals = {'port': 993,
|
||||
'is_ssl': 0,
|
||||
'attach': 0,
|
||||
'original': 0,
|
||||
}
|
||||
if serv_config.has_section(global_section_name):
|
||||
config_vals.update(serv_config.items(global_section_name))
|
||||
|
||||
custom_section_name = '.'.join((global_section_name,
|
||||
fetchmail.name))
|
||||
if serv_config.has_section(custom_section_name):
|
||||
config_vals.update(serv_config.items(custom_section_name))
|
||||
|
||||
for key, to_type in key_types.items():
|
||||
if config_vals.get(key):
|
||||
config_vals[key] = to_type(config_vals[key])
|
||||
|
||||
fetchmail.update(config_vals)
|
||||
|
||||
@api.model
|
||||
def _search_type(self, oper, value):
|
||||
operators = {
|
||||
'=': operator.eq,
|
||||
'!=': operator.ne,
|
||||
'in': operator.contains,
|
||||
'not in': lambda a, b: not operator.contains(a, b),
|
||||
}
|
||||
if oper not in operators:
|
||||
return [('id', 'in', [])]
|
||||
servers = self.search([]).filtered(
|
||||
lambda s: operators[oper](value, s.type)
|
||||
)
|
||||
return [('id', 'in', servers.ids)]
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# Copyright 2012-2018 Camptocamp SA
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.addons.server_environment import serv_config
|
||||
|
||||
|
||||
class IrMailServer(models.Model):
|
||||
_inherit = "ir.mail_server"
|
||||
|
||||
smtp_host = fields.Char(compute='_compute_server_env',
|
||||
required=False,
|
||||
readonly=True)
|
||||
smtp_port = fields.Integer(compute='_compute_server_env',
|
||||
required=False,
|
||||
readonly=True)
|
||||
smtp_user = fields.Char(compute='_compute_server_env',
|
||||
required=False,
|
||||
readonly=True)
|
||||
smtp_pass = fields.Char(compute='_compute_server_env',
|
||||
required=False,
|
||||
readonly=True)
|
||||
smtp_encryption = fields.Selection(compute='_compute_server_env',
|
||||
required=False,
|
||||
readonly=True)
|
||||
|
||||
@api.depends()
|
||||
def _compute_server_env(self):
|
||||
for server in self:
|
||||
global_section_name = 'outgoing_mail'
|
||||
|
||||
# default vals
|
||||
config_vals = {'smtp_port': 587}
|
||||
if serv_config.has_section(global_section_name):
|
||||
config_vals.update((serv_config.items(global_section_name)))
|
||||
|
||||
custom_section_name = '.'.join((global_section_name, server.name))
|
||||
if serv_config.has_section(custom_section_name):
|
||||
config_vals.update(serv_config.items(custom_section_name))
|
||||
|
||||
if config_vals.get('smtp_port'):
|
||||
config_vals['smtp_port'] = int(config_vals['smtp_port'])
|
||||
|
||||
server.update(config_vals)
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="inherit_fetchmail" model="ir.ui.view">
|
||||
<field name="model">fetchmail.server</field>
|
||||
<field name="inherit_id" ref="fetchmail.view_email_server_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="server" position="attributes">
|
||||
<attribute name="attrs" eval="False"/>
|
||||
</field>
|
||||
<field name="port" position="attributes">
|
||||
<attribute name="attrs" eval="False"/>
|
||||
</field>
|
||||
<field name="user" position="attributes">
|
||||
<attribute name="attrs" eval="False"/>
|
||||
</field>
|
||||
<field name="password" position="attributes">
|
||||
<attribute name="attrs" eval="False"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Loading…
Reference in New Issue