Browse Source

Merge 25f22b13c0 into 65fa5e50a2

pull/363/merge
Héctor Villarreal Ortega 5 years ago
committed by GitHub
parent
commit
1e291f4543
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      message_auto_subscribe_notify_own/README.rst
  2. 1
      message_auto_subscribe_notify_own/__init__.py
  3. 10
      message_auto_subscribe_notify_own/__manifest__.py
  4. 1
      message_auto_subscribe_notify_own/models/__init__.py
  5. 18
      message_auto_subscribe_notify_own/models/auto_subscribe_notify_own_model.py
  6. 25
      message_auto_subscribe_notify_own/models/mail_thread.py
  7. 3
      message_auto_subscribe_notify_own/readme/CONFIGURE.rst
  8. 1
      message_auto_subscribe_notify_own/readme/CONTRIBUTORS.rst
  9. 4
      message_auto_subscribe_notify_own/security/ir.model.access.csv
  10. 35
      message_auto_subscribe_notify_own/static/description/index.html
  11. 1
      message_auto_subscribe_notify_own/tests/__init__.py
  12. 15
      message_auto_subscribe_notify_own/tests/test_fake_model.py
  13. 48
      message_auto_subscribe_notify_own/tests/test_message_auto_subscribe_notify_own.py
  14. 26
      message_auto_subscribe_notify_own/views/auto_subscribe_notify_own_model.xml

14
message_auto_subscribe_notify_own/README.rst

@ -10,9 +10,9 @@ Message Auto Subscribe Notify Own
.. |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-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |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%2Fsocial-lightgray.png?logo=github
:target: https://github.com/OCA/social/tree/11.0/message_auto_subscribe_notify_own
:alt: OCA/social
@ -40,6 +40,13 @@ a reminder sent to your mailbox that you are now responsible for that object.
.. contents::
:local:
Configuration
=============
Configure models you want to be notified on your own creation
* Go to Settings > Technical > Email > Notify Own Models
Usage
=====
@ -68,6 +75,7 @@ Contributors
~~~~~~~~~~~~
* Jordi Ballester Alomar <jordi.ballester@eficent.com>
* Hector Villarreal Ortega <hector.villarreal@eficent.com>
Maintainers
~~~~~~~~~~~

1
message_auto_subscribe_notify_own/__init__.py

@ -1 +1,2 @@
from . import models
from .tests import test_fake_model

10
message_auto_subscribe_notify_own/__manifest__.py

@ -1,17 +1,21 @@
# Copyright 2019 Eficent Business and IT Consulting Services, S.L.
# Copyright 2019 Aleph Objects, Inc.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
"name": "Message Auto Subscribe Notify Own",
"summary": "Receive notifications of your own subscriptions",
"version": "11.0.1.0.0",
"version": "11.0.2.0.0",
"category": "Social Network",
"website": "https://github.com/OCA/social",
"author": "Eficent, "
"Odoo Community Association (OCA)",
"license": "LGPL-3",
"license": "AGPL-3",
"installable": True,
"depends": [
"mail",
],
"data": [
'security/ir.model.access.csv',
'views/auto_subscribe_notify_own_model.xml'
]
}

1
message_auto_subscribe_notify_own/models/__init__.py

@ -1 +1,2 @@
from . import auto_subscribe_notify_own_model
from . import mail_thread

18
message_auto_subscribe_notify_own/models/auto_subscribe_notify_own_model.py

@ -0,0 +1,18 @@
# Copyright 2019 Aleph Objects, Inc.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class AutoSubscribeNotifyOwnModel(models.Model):
_name = 'auto.subscribe.notify.own.model'
name = fields.Char(compute='_compute_name')
model_id = fields.Many2one('ir.model', 'Model', required=True)
active = fields.Boolean(default=True)
@api.multi
@api.depends('model_id')
def _compute_name(self):
for record in self:
record.name = record.model_id.model

25
message_auto_subscribe_notify_own/models/mail_thread.py

@ -1,6 +1,6 @@
# Copyright 2019 Eficent Business and IT Consulting Services, S.L.
# Copyright 2019 Aleph Objects, Inc.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import api, models
@ -12,14 +12,17 @@ class MailThread(models.AbstractModel):
def message_auto_subscribe(self, updated_fields, values=None):
super(MailThread, self).message_auto_subscribe(updated_fields,
values=values)
user_field_lst = self._message_get_auto_subscribe_fields(
updated_fields)
to_add_users = self.env['res.users'].sudo().browse(
[values[name] for name in user_field_lst if values.get(name)]
).filtered(lambda u: u.partner_id.active)
user_pids = [user.partner_id.id for user in to_add_users
if user == self.env.user and
user.notification_type == 'email']
if user_pids:
self._message_auto_subscribe_notify(user_pids)
self_notify_model = self.env['auto.subscribe.notify.own.model'].search(
[('model_id', '=', self._name), ('active', '=', 'True')], limit=1)
if self_notify_model:
user_field_lst = self._message_get_auto_subscribe_fields(
updated_fields)
to_add_users = self.env['res.users'].sudo().browse(
[values[name] for name in user_field_lst if values.get(name)]
).filtered(lambda u: u.partner_id.active)
user_pids = [user.partner_id.id for user in to_add_users
if user == self.env.user and
user.notification_type == 'email']
if user_pids:
self._message_auto_subscribe_notify(user_pids)
return True

3
message_auto_subscribe_notify_own/readme/CONFIGURE.rst

@ -0,0 +1,3 @@
Configure models you want to be notified on your own creation
* Go to Settings > Technical > Email > Notify Own Models

1
message_auto_subscribe_notify_own/readme/CONTRIBUTORS.rst

@ -1 +1,2 @@
* Jordi Ballester Alomar <jordi.ballester@eficent.com>
* Hector Villarreal Ortega <hector.villarreal@eficent.com>

4
message_auto_subscribe_notify_own/security/ir.model.access.csv

@ -0,0 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_auto_subscribe_notify_own_model_user,access_auto_subscribe_notify_own_model_user,model_auto_subscribe_notify_own_model,base.group_user,1,0,0,0
access_auto_subscribe_notify_own_model_erp_manager,access_auto_subscribe_notify_own_model_admin,model_auto_subscribe_notify_own_model,base.group_erp_manager,1,1,1,1
access_fake_model_test,fake.model.test,model_message_auto_subscribe_notify_own_test,base.group_user,1,1,1,1

35
message_auto_subscribe_notify_own/static/description/index.html

@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/social/tree/11.0/message_auto_subscribe_notify_own"><img alt="OCA/social" src="https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/social-11-0/social-11-0-message_auto_subscribe_notify_own"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/205/11.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/social/tree/11.0/message_auto_subscribe_notify_own"><img alt="OCA/social" src="https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/social-11-0/social-11-0-message_auto_subscribe_notify_own"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/205/11.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>With this module you will receive a notification when you assign yourself
to an object that has a responsible user, like the salesperson in
leads/opportunities.</p>
@ -378,23 +378,31 @@ a reminder sent to your mailbox that you are now responsible for that object.</p
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="id1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id6">Maintainers</a></li>
<li><a class="reference internal" href="#configuration" id="id1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="id2">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#id1">Configuration</a></h1>
<p>Configure models you want to be notified on your own creation</p>
<ul class="simple">
<li>Go to Settings &gt; Technical &gt; Email &gt; Notify Own Models</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id1">Usage</a></h1>
<h1><a class="toc-backref" href="#id2">Usage</a></h1>
<p>Assign yourself as salesperson of a lead/opportunity, for example, and you
will see that you’ll receive a notification.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id2">Bug Tracker</a></h1>
<h1><a class="toc-backref" href="#id3">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/social/issues">GitHub Issues</a>.
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
@ -402,21 +410,22 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id3">Credits</a></h1>
<h1><a class="toc-backref" href="#id4">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id4">Authors</a></h2>
<h2><a class="toc-backref" href="#id5">Authors</a></h2>
<ul class="simple">
<li>Eficent</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id5">Contributors</a></h2>
<h2><a class="toc-backref" href="#id6">Contributors</a></h2>
<ul class="simple">
<li>Jordi Ballester Alomar &lt;<a class="reference external" href="mailto:jordi.ballester&#64;eficent.com">jordi.ballester&#64;eficent.com</a>&gt;</li>
<li>Hector Villarreal Ortega &lt;<a class="reference external" href="mailto:hector.villarreal&#64;eficent.com">hector.villarreal&#64;eficent.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id6">Maintainers</a></h2>
<h2><a class="toc-backref" href="#id7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose

1
message_auto_subscribe_notify_own/tests/__init__.py

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

15
message_auto_subscribe_notify_own/tests/test_fake_model.py

@ -0,0 +1,15 @@
# Copyright 2019 Eficent Business and IT Consulting Services, S.L.
# Copyright 2019 Aleph Objects, Inc.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class MessageAutoSubscribeNotifyOwnTest(models.Model):
"""A Fake model to Test."""
_name = 'message_auto_subscribe_notify_own.test'
_inherit = 'mail.thread'
name = fields.Char()
user_id = fields.Many2one(comodel_name='res.users',
track_visibility='onchange')

48
message_auto_subscribe_notify_own/tests/test_message_auto_subscribe_notify_own.py

@ -0,0 +1,48 @@
# Copyright 2019 Eficent Business and IT Consulting Services, S.L.
# Copyright 2019 Aleph Objects, Inc.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo.tests.common import TransactionCase
class TestMessageAutoSubscribeNotifyOwn(TransactionCase):
def setUp(self):
super(TestMessageAutoSubscribeNotifyOwn, self).setUp()
self.user_root = self.env.ref('base.user_root')
self.user_root.notification_type = 'email'
self.fake_model_id = self.env['ir.model'].search(
[('name', '=', 'message_auto_subscribe_notify_own.test')])
self.env['auto.subscribe.notify.own.model'].create(dict(
model_id=self.fake_model_id.id
))
self.fake_test = self.env[
'message_auto_subscribe_notify_own.test'].create(
dict(name='Test Fake Model',
user_id=self.env.ref('base.user_demo').id))
def tearDown(self):
super(TestMessageAutoSubscribeNotifyOwn, self).tearDown()
def test_message_auto_subscribe_notify_own(self):
prev_mail_messages = self.env['mail.message'].search([
('record_name', '=', self.fake_test.name),
('reply_to', '=', self.user_root.email_formatted)
])
self.fake_test.update(dict(
user_id=self.user_root.id
))
mail_messages = self.env['mail.message'].search([
('record_name', '=', self.fake_test.name),
('reply_to', '=', self.user_root.email_formatted)
])
self.assertEqual(len(mail_messages-prev_mail_messages), 1)
def test_compute_name(self):
notified_model = self.env['auto.subscribe.notify.own.model'].search(
[('model_id', '=', self.fake_model_id.id)])
notified_model._compute_name()
self.assertTrue(notified_model.name,
'message_auto_subscribe_notify_own.test')

26
message_auto_subscribe_notify_own/views/auto_subscribe_notify_own_model.xml

@ -0,0 +1,26 @@
<?xml version="1.0"?>
<odoo>
<data>
<record model="ir.ui.view" id="view_auto_subscribe_notify_own_model_tree">
<field name="name">auto.subscribe.notify.own.model.tree</field>
<field name="model">auto.subscribe.notify.own.model</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<tree string="Self Subscribe Notify Own" editable="bottom" create="true">
<field name="name"/>
<field name="model_id" domain="[('is_mail_thread','=', True)]"/>
<field name="active"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_auto_subscribe_notify_own_model">
<field name="name">Notify Own Models</field>
<field name="res_model">auto.subscribe.notify.own.model</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem name="Notify Own Models" id="menu_message_auto_subscribe_notify_own_model" parent="base.menu_email" action="action_view_auto_subscribe_notify_own_model"/>
</data>
</odoo>
Loading…
Cancel
Save