Get referenceable modules from res.request.link.

This follows better the Odoo standard and makes it easier to configure
by the administrator.
pull/12/head
Jairo Llopis 2015-09-18 12:24:55 +02:00
parent 89e356d2fc
commit ec78bb9d12
7 changed files with 81 additions and 53 deletions

View File

@ -9,31 +9,30 @@ Message forward
This module was written to extend the functionality of mails to support
forwarding them to another contact or database object.
* **To another object of the database:**
* All its followers are notified according to their settings.
* **To other contacts:**
* They recieve the forwarded message according to the usual notification
rules of Odoo.
* **To another object of the database:** All its followers are notified
according to their settings.
Installation
============
* **To other contacts:** They recieve the forwarded message according to the
usual notification rules of Odoo.
When installed, this module allows forwarding to the following database
objects:
Configuration
=============
* ``crm.lead``
* ``crm.meeting``
* ``crm.phonecall``
* ``mail.group``
* ``note.note``
* ``product.product``
* ``project.project``
* ``project.task``
* ``res.partner``
* ``sale.order``
When installed, this module allows forwarding to a limited selection of
database models, that will get automatically updated when you install other
modules.
Of course, if some of those are not available in your database, they will be
hidden until you install the module that adds them.
This list can be customized by a user that has *Technical Features* permission.
To do it:
* Go to *Settings > Technical > Database Structure > Referenceable Models*.
* Any model there with *Mail forward target* enabled will appear in the list of
models that can get forwarded messages.
* If you want to *remove* a model from the list, it's usually better to just
*disable* its check box instead of deleting it, because that record might
be used by other modules.
Usage
=====
@ -75,7 +74,7 @@ Bugs are tracked on `GitHub Issues <https://github.com/OCA/social/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 `here
<https://github.com/OCA/social/issues/new?body=module:%20mail_forward%0Aversion:%208.0.6.0.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
<https://github.com/OCA/social/issues/new?body=module:%20mail_forward%0Aversion:%208.0.7.0.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits

View File

@ -2,4 +2,4 @@
# © 2014-2015 Grupo ESOC <www.grupoesoc.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from .wizard import mail_forward
from . import models, wizard

View File

@ -5,9 +5,9 @@
{
"name": "Message Forward",
"summary": "Add option to forward messages",
"version": "8.0.6.0.0",
"version": "8.0.7.0.0",
"category": "Social Network",
"website": "http://www.grupoesoc.es, https://odoo-community.org/",
"website": "https://odoo-community.org/",
"author": "Grupo ESOC, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
@ -17,8 +17,9 @@
"web",
],
"data": [
"wizard/mail_forward.xml",
"views/assets.xml",
"views/res_request_link.xml",
"wizard/mail_forward.xml",
],
"qweb": [
"static/src/xml/mail_forward.xml",

View File

@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
# © 2014-2015 Grupo ESOC <www.grupoesoc.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import fields, models
class IrModel(models.Model):
_inherit = "res.request.link"
mail_forward_target = fields.Boolean(
default=True,
index=True,
help="Allow to forward mails to this model.")

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- © 2014-2015 Grupo ESOC <www.grupoesoc.es>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<openerp>
<data>
<record id="res_request_link_view_form" model="ir.ui.view">
<field name="name">Add option to forward mails</field>
<field name="model">res.request.link</field>
<field name="inherit_id" ref="base.res_request_link-view"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='priority']" position="after">
<field name="mail_forward_target"/>
</xpath>
</field>
</record>
<record id="res_request_link_view_tree" model="ir.ui.view">
<field name="name">Add option to forward mails</field>
<field name="model">res.request.link</field>
<field name="inherit_id" ref="base.res_request_link_tree-view"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='object']" position="after">
<field name="mail_forward_target"/>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# © 2014-2015 Grupo ESOC <www.grupoesoc.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import mail_forward

View File

@ -11,23 +11,9 @@ class MailForwardComposeMessage(models.TransientModel):
It duplicates the message and optionally attaches it to another object
of the database and sends it to another recipients than the original one.
"""
_name = "mail_forward.compose.message"
_inherits = {"mail.compose.message": "original_wizard_id"}
_models = [
"crm.lead",
"crm.meeting",
"crm.phonecall",
"mail.group",
"note.note",
"product.product",
"project.project",
"project.task",
"res.partner",
"sale.order",
]
@api.model
def default_get(self, fields):
"""Fix default values.
@ -39,7 +25,6 @@ class MailForwardComposeMessage(models.TransientModel):
This method fixes that by getting it from the context if available.
"""
result = self.original_wizard_id.default_get(fields)
if "subject" in result and "default_subject" in self.env.context:
@ -49,23 +34,16 @@ class MailForwardComposeMessage(models.TransientModel):
@api.model
def models(self):
"""Get allowed models and their names.
It searches for the models on the database, so if modules are not
installed, models will not be shown.
"""
model_objs = self.env["ir.model"].search(
[("model", "in", self.env.context.get("model_list",
self._models))],
"""Get allowed models and their names."""
model_objs = self.env["res.request.link"].search(
[("mail_forward_target", "=", True)],
order="name")
return [(m.model, m.name) for m in model_objs]
return [(m.object, m.name) for m in model_objs]
@api.one
@api.onchange("destination_object_id")
def change_destination_object(self):
"""Update some fields for the new message."""
if self.destination_object_id:
self.model = self.destination_object_id._name
self.res_id = self.destination_object_id.id
@ -84,7 +62,6 @@ class MailForwardComposeMessage(models.TransientModel):
@api.one
def send_mail(self):
"""Send mail and execute the attachment relocation if needed."""
# Let the original wizard do de hard work
result = self.original_wizard_id.send_mail()