Skip to content

Commit

Permalink
[ADD] mail_template_attachment_i18n: Mail Template Language Dependent…
Browse files Browse the repository at this point in the history
… Attachments (#1367)
  • Loading branch information
tarteo authored and pedrobaeza committed Apr 25, 2019
1 parent 1bc7158 commit 82d3442
Show file tree
Hide file tree
Showing 19 changed files with 397 additions and 0 deletions.
99 changes: 99 additions & 0 deletions mail_template_attachment_i18n/README.rst
@@ -0,0 +1,99 @@
===========================================
Mail Template Language Specific Attachments
===========================================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
:target: https://github.com/OCA/server-tools/tree/11.0/mail_template_attachment_i18n
:alt: OCA/server-tools
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/server-tools-11-0/server-tools-11-0-mail_template_attachment_i18n
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/149/11.0
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|

This module extends the functionality of mail templates.
It allows you to configure attachments based on the language of the partner.
For example you can use it to localize your company's terms of agreements.

**Table of contents**

.. contents::
:local:

Configuration
=============

To configure a language dependent attachment:

#. Activate the developer mode;
#. go to *Settings > Technical > Email > Templates*;
#. go to the form view of the template you want to change;
#. change the field *Language Dependent Attachments* to what you want.

Usage
=====

When a template is selected in the mail composer, the attachments will be automatically added based on the recipients language.
The language of the recipients can be configured on the Partner form view.
When partners with different languages are selected all attachments of the partners languages will be added.

To use the functionality:

#. Configure a template (e.g. the sale order mail template)
#. go to a sale order;
#. click *Send by Email*;
#. the attachments are added based on the customer's language.

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 smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20mail_template_attachment_i18n%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Onestein

Contributors
~~~~~~~~~~~~

* Dennis Sluijk <d.sluijk@onestein.nl>

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

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.

This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/11.0/mail_template_attachment_i18n>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions mail_template_attachment_i18n/__init__.py
@@ -0,0 +1 @@
from . import models
18 changes: 18 additions & 0 deletions mail_template_attachment_i18n/__manifest__.py
@@ -0,0 +1,18 @@
{
'name': 'Mail Template Language Specific Attachments',
'summary': 'Set language specific attachments on mail templates.',
'author': 'Onestein,Odoo Community Association (OCA)',
'website': 'https://github.com/oca/server-tools',
'category': 'Localization',
'version': '11.0.1.0.0',
'license': 'AGPL-3',
'depends': [
'mail'
],
'data': [
'views/mail_template_view.xml',

'security/ir.model.access.csv'
],
'installable': True,
}
2 changes: 2 additions & 0 deletions mail_template_attachment_i18n/models/__init__.py
@@ -0,0 +1,2 @@
from . import ir_attachment_language
from . import mail_template
28 changes: 28 additions & 0 deletions mail_template_attachment_i18n/models/ir_attachment_language.py
@@ -0,0 +1,28 @@
# Copyright 2018 Onestein
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import fields, models


class IrAttachmentLanguage(models.Model):
_name = 'ir.attachment.language'

mail_template_id = fields.Many2one(
comodel_name='mail.template',
string='Template',
required=True,
ondelete='cascade',
)

lang = fields.Selection(
selection=lambda self: self.env['res.lang'].get_installed(),
string='Language',
required=True,
)

attachment_id = fields.Many2one(
comodel_name='ir.attachment',
string='Attachment',
required=True,
ondelete='cascade',
)
44 changes: 44 additions & 0 deletions mail_template_attachment_i18n/models/mail_template.py
@@ -0,0 +1,44 @@
# Copyright 2018 Onestein
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import api, fields, models


class MailTemplate(models.Model):
_inherit = 'mail.template'

ir_attachment_language_ids = fields.One2many(
string='Language Dependent Attachments',
comodel_name='ir.attachment.language',
inverse_name='mail_template_id',
)

@api.multi
def generate_email(self, res_ids, fields=None):
self.ensure_one()
multi = True
if isinstance(res_ids, int):
res_ids = [res_ids]
multi = False
res = super().generate_email(
res_ids, fields
)
attached = []
for res_id in res.keys():
mail = res[res_id]
partner_ids = 'partner_ids' in mail and \
mail['partner_ids'] or False
if not partner_ids:
continue
for partner in self.env['res.partner'].browse(partner_ids):
for lang_attach in self.ir_attachment_language_ids.filtered(
lambda a: a.lang == partner.lang):
if lang_attach.attachment_id.id in attached:
continue
if not res[res_id].get('attachments'):
res[res_id]['attachments'] = []
res[res_id]['attachments'].append((
lang_attach.attachment_id.name,
lang_attach.attachment_id.datas))
attached.append(lang_attach.id)
return multi and res or res[res_ids[0]]
6 changes: 6 additions & 0 deletions mail_template_attachment_i18n/readme/CONFIGURE.rst
@@ -0,0 +1,6 @@
To configure a language dependent attachment:

#. Activate the developer mode;
#. go to *Settings > Technical > Email > Templates*;
#. go to the form view of the template you want to change;
#. change the field *Language Dependent Attachments* to what you want.
1 change: 1 addition & 0 deletions mail_template_attachment_i18n/readme/CONTRIBUTORS.rst
@@ -0,0 +1 @@
* Dennis Sluijk <d.sluijk@onestein.nl>
3 changes: 3 additions & 0 deletions mail_template_attachment_i18n/readme/DESCRIPTION.rst
@@ -0,0 +1,3 @@
This module extends the functionality of mail templates.
It allows you to configure attachments based on the language of the partner.
For example you can use it to localize your company's terms of agreements.
10 changes: 10 additions & 0 deletions mail_template_attachment_i18n/readme/USAGE.rst
@@ -0,0 +1,10 @@
When a template is selected in the mail composer, the attachments will be automatically added based on the recipients language.
The language of the recipients can be configured on the Partner form view.
When partners with different languages are selected all attachments of the partners languages will be added.

To use the functionality:

#. Configure a template (e.g. the sale order mail template)
#. go to a sale order;
#. click *Send by Email*;
#. the attachments are added based on the customer's language.
3 changes: 3 additions & 0 deletions mail_template_attachment_i18n/security/ir.model.access.csv
@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_attachment_language_admin,ir.attachment.language admin,model_ir_attachment_language,base.group_no_one,1,1,1,1
access_attachment_language_everyone,ir.attachment.language everyone,model_ir_attachment_language,,1,0,0,0
23 changes: 23 additions & 0 deletions mail_template_attachment_i18n/views/mail_template_view.xml
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2018 Onestein
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->

<odoo>
<record id="mail_template_form" model="ir.ui.view">
<field name="name">mail.template.form</field>
<field name="model">mail.template</field>
<field name="inherit_id" ref="mail.email_template_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='attachment_ids']" position="after">
<group>
<field name="ir_attachment_language_ids">
<tree editable="top">
<field name="lang" />
<field name="attachment_id" domain="[('type', '=', 'binary')]" />
</tree>
</field>
</group>
</xpath>
</field>
</record>
</odoo>
74 changes: 74 additions & 0 deletions test_mail_template_attachment_i18n/README.rst
@@ -0,0 +1,74 @@
========================================
Tests for mail_template_attachment_i18n
========================================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
:target: https://github.com/OCA/server-tools/tree/11.0/test_mail_template_attachment_i18n
:alt: OCA/server-tools
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/server-tools-11-0/server-tools-11-0-test_mail_template_attachment_i18n
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/149/11.0
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|

Tests for mail_template_attachment_i18n.
This module exists to avoid a weird dependency in mail_template_attachment_i18n to the sale module.

**Table of contents**

.. contents::
:local:

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 smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20test_mail_template_attachment_i18n%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Onestein

Contributors
~~~~~~~~~~~~

* Dennis Sluijk <d.sluijk@onestein.nl>

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

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.

This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/11.0/test_mail_template_attachment_i18n>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Empty file.
14 changes: 14 additions & 0 deletions test_mail_template_attachment_i18n/__manifest__.py
@@ -0,0 +1,14 @@
{
'name': ' Tests for mail_template_attachment_i18n',
'summary': 'Test suite for mail_template_attachment_i18n.',
'author': 'Onestein,Odoo Community Association (OCA)',
'website': 'https://github.com/oca/server-tools',
'category': 'Generic Modules',
'version': '11.0.1.0.0',
'license': 'AGPL-3',
'depends': [
'mail_template_attachment_i18n',
'sale'
],
'installable': True,
}
1 change: 1 addition & 0 deletions test_mail_template_attachment_i18n/readme/CONTRIBUTORS.rst
@@ -0,0 +1 @@
* Dennis Sluijk <d.sluijk@onestein.nl>
2 changes: 2 additions & 0 deletions test_mail_template_attachment_i18n/readme/DESCRIPTION.rst
@@ -0,0 +1,2 @@
Tests for mail_template_attachment_i18n.
This module exists to avoid a weird dependency in mail_template_attachment_i18n to the sale module.
1 change: 1 addition & 0 deletions test_mail_template_attachment_i18n/tests/__init__.py
@@ -0,0 +1 @@
from . import test_attaching_by_language

0 comments on commit 82d3442

Please sign in to comment.