Merge pull request #7 from simahawk/11.0-mig-mail_environment

[11.0][MIG] mail_environment
This commit is contained in:
Guewen Baconnier 2018-01-19 10:41:13 +01:00 committed by GitHub
commit 80813dea95
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 474 additions and 0 deletions

117
mail_environment/README.rst Normal file
View File

@ -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.

View File

@ -0,0 +1 @@
from . import models

View File

@ -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',
],
}

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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 ""

View File

@ -0,0 +1,2 @@
from . import ir_mail_server
from . import fetchmail_server

View File

@ -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)]

View File

@ -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)

View File

@ -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>