mirror of https://github.com/OCA/social.git
adds an option to disable the notification to existing followers
on a new email dropped to a record.pull/467/head
parent
9921383d76
commit
56f2057411
|
@ -18,5 +18,6 @@
|
||||||
},
|
},
|
||||||
"data": [
|
"data": [
|
||||||
'views/templates.xml',
|
'views/templates.xml',
|
||||||
|
'views/res_config_settings_views.xml',
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
# Copyright 2018 Therp BV <https://therp.nl>
|
# Copyright 2018 Therp BV <https://therp.nl>
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
from . import mail_thread
|
from . import mail_thread
|
||||||
|
from . import res_config_settings
|
||||||
|
|
|
@ -15,7 +15,14 @@ class MailThread(models.AbstractModel):
|
||||||
def message_drop(self, model, message, custom_values=None,
|
def message_drop(self, model, message, custom_values=None,
|
||||||
save_original=False, strip_attachments=False,
|
save_original=False, strip_attachments=False,
|
||||||
thread_id=None):
|
thread_id=None):
|
||||||
result = self.message_process(
|
disable_notify_mail_drop_target = \
|
||||||
|
self.env["ir.config_parameter"].get_param(
|
||||||
|
"mail_drop_target.disable_notify", default=False)
|
||||||
|
self_message_process = self
|
||||||
|
if disable_notify_mail_drop_target:
|
||||||
|
self_message_process = self_message_process.with_context(
|
||||||
|
message_create_from_mail_mail=True)
|
||||||
|
result = self_message_process.message_process(
|
||||||
model, message, custom_values=custom_values,
|
model, message, custom_values=custom_values,
|
||||||
save_original=save_original, strip_attachments=strip_attachments,
|
save_original=save_original, strip_attachments=strip_attachments,
|
||||||
thread_id=thread_id
|
thread_id=thread_id
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
# Copyright 2019 Eficent Business and IT Consulting Services, S.L.
|
||||||
|
# <https//www.eficent.com>
|
||||||
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||||
|
from odoo import api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ResConfigSettings(models.TransientModel):
|
||||||
|
_inherit = 'res.config.settings'
|
||||||
|
|
||||||
|
disable_notify_mail_drop_target = fields.Boolean(
|
||||||
|
'Disable Notification followers on mail dropped to a Thread',
|
||||||
|
help="When this setting is set, when a user drops an "
|
||||||
|
"email into an existing thread the followers of the thread will "
|
||||||
|
"not be notified. This sets an ir.config.parameter "
|
||||||
|
"mail_drop_target.disable_notify")
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def get_values(self):
|
||||||
|
res = super(ResConfigSettings, self).get_values()
|
||||||
|
|
||||||
|
disable_notify_mail_drop_target = \
|
||||||
|
self.env["ir.config_parameter"].get_param(
|
||||||
|
"mail_drop_target.disable_notify", default=False)
|
||||||
|
res.update(
|
||||||
|
disable_notify_mail_drop_target=disable_notify_mail_drop_target,
|
||||||
|
)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def set_values(self):
|
||||||
|
super(ResConfigSettings, self).set_values()
|
||||||
|
self.env['ir.config_parameter'].set_param(
|
||||||
|
"mail_drop_target.disable_notify",
|
||||||
|
self.disable_notify_mail_drop_target or '')
|
|
@ -0,0 +1,3 @@
|
||||||
|
To disable the automatic notification to existing followers when you drop an
|
||||||
|
email to a record, go to *Settings*, activate the developer mode, and then go to
|
||||||
|
*Settings / General Settings* and set the flag 'Disable Mail Drag&Drop Notification'.
|
|
@ -1,3 +1,7 @@
|
||||||
This module was written to allow users to drag&drop emails from their desktop to Odoo.
|
This module was written to allow users to drag&drop emails from their desktop to Odoo.
|
||||||
|
|
||||||
It supports as well RFC822 .eml files as Outlook .msg (those only if `an extra library <https://github.com/mattgwwalker/msg-extractor>`_ is installed) files.
|
It supports as well RFC822 .eml files as Outlook .msg (those only if `an extra library <https://github.com/mattgwwalker/msg-extractor>`_ is installed) files.
|
||||||
|
|
||||||
|
When the mail is dropped to an odoo record, it will automatically send a notification
|
||||||
|
of that new message that has been added to all the existing followers. It is possible
|
||||||
|
to disable this notification.
|
||||||
|
|
|
@ -10,6 +10,7 @@ class TestMailDropTarget(TransactionCase):
|
||||||
self.partner = self.env['res.partner'].create({
|
self.partner = self.env['res.partner'].create({
|
||||||
'name': 'TEST PARTNER'
|
'name': 'TEST PARTNER'
|
||||||
})
|
})
|
||||||
|
self.partner.message_subscribe(partner_ids=self.partner.ids)
|
||||||
|
|
||||||
def test_eml(self):
|
def test_eml(self):
|
||||||
message = tools.file_open(
|
message = tools.file_open(
|
||||||
|
@ -36,6 +37,9 @@ class TestMailDropTarget(TransactionCase):
|
||||||
self.partner._name, message, thread_id=self.partner.id)
|
self.partner._name, message, thread_id=self.partner.id)
|
||||||
self.partner.refresh()
|
self.partner.refresh()
|
||||||
self.assertEqual(comments+1, len(self.partner.message_ids))
|
self.assertEqual(comments+1, len(self.partner.message_ids))
|
||||||
|
msg = self.partner.message_ids.filtered(
|
||||||
|
lambda m: m.subject == 'Test')
|
||||||
|
self.assertIsNotNone(msg.needaction_partner_ids)
|
||||||
with self.assertRaises(exceptions.Warning):
|
with self.assertRaises(exceptions.Warning):
|
||||||
self.partner.message_process_msg(
|
self.partner.message_process_msg(
|
||||||
self.partner._name, message, thread_id=self.partner.id)
|
self.partner._name, message, thread_id=self.partner.id)
|
||||||
|
@ -46,3 +50,24 @@ class TestMailDropTarget(TransactionCase):
|
||||||
new=False,
|
new=False,
|
||||||
):
|
):
|
||||||
self.test_msg()
|
self.test_msg()
|
||||||
|
|
||||||
|
def test_msg_no_notification(self):
|
||||||
|
message = base64.b64encode(tools.file_open(
|
||||||
|
'sample.msg',
|
||||||
|
mode='rb',
|
||||||
|
subdir="addons/mail_drop_target/tests"
|
||||||
|
).read())
|
||||||
|
settings = self.env['res.config.settings'].create({})
|
||||||
|
settings.disable_notify_mail_drop_target = True
|
||||||
|
settings.execute()
|
||||||
|
comments = len(self.partner.message_ids)
|
||||||
|
self.partner.message_process_msg(
|
||||||
|
self.partner._name, message, thread_id=self.partner.id)
|
||||||
|
self.partner.refresh()
|
||||||
|
self.assertEqual(comments+1, len(self.partner.message_ids))
|
||||||
|
msg = self.partner.message_ids.filtered(
|
||||||
|
lambda m: m.subject == 'Test')
|
||||||
|
self.assertEqual(len(msg.needaction_partner_ids), 0)
|
||||||
|
with self.assertRaises(exceptions.Warning):
|
||||||
|
self.partner.message_process_msg(
|
||||||
|
self.partner._name, message, thread_id=self.partner.id)
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<data>
|
||||||
|
<record id="res_config_settings_view_form" model="ir.ui.view">
|
||||||
|
<field name="name">res.config.settings.view.form.inherit.mail</field>
|
||||||
|
<field name="model">res.config.settings</field>
|
||||||
|
<field name="inherit_id" ref="mail.res_config_settings_view_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<div id="emails" position="inside">
|
||||||
|
<div class="col-xs-12 col-md-6 o_setting_box">
|
||||||
|
<div class="o_setting_left_pane">
|
||||||
|
<field name="disable_notify_mail_drop_target"/>
|
||||||
|
</div>
|
||||||
|
<div class="o_setting_right_pane">
|
||||||
|
<label string="Disable Mail Drag&Drop Notification" for="disable_notify_mail_drop_target"/>
|
||||||
|
<div class="text-muted">
|
||||||
|
When a user drops an email into an existing thread
|
||||||
|
the followers of the thread will not be notified.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
</odoo>
|
Loading…
Reference in New Issue