From 25f22b13c0f79e6189f56520600964abd95d2e19 Mon Sep 17 00:00:00 2001
From: hveficent
Date: Wed, 20 Feb 2019 14:21:09 +0100
Subject: [PATCH] [11.0][IMP] message_auto_subscribe_notify_own: Allow to
select models to be notified in
---
message_auto_subscribe_notify_own/README.rst | 14 ++++--
message_auto_subscribe_notify_own/__init__.py | 1 +
.../__manifest__.py | 10 ++--
.../models/__init__.py | 1 +
.../models/auto_subscribe_notify_own_model.py | 18 +++++++
.../models/mail_thread.py | 25 +++++-----
.../readme/CONFIGURE.rst | 3 ++
.../readme/CONTRIBUTORS.rst | 1 +
.../readme/DESCRIPTION.rst | 2 +-
.../security/ir.model.access.csv | 4 ++
.../static/description/index.html | 35 +++++++++-----
.../tests/__init__.py | 1 +
.../tests/test_fake_model.py | 15 ++++++
.../test_message_auto_subscribe_notify_own.py | 48 +++++++++++++++++++
.../views/auto_subscribe_notify_own_model.xml | 26 ++++++++++
15 files changed, 173 insertions(+), 31 deletions(-)
create mode 100644 message_auto_subscribe_notify_own/models/auto_subscribe_notify_own_model.py
create mode 100644 message_auto_subscribe_notify_own/readme/CONFIGURE.rst
create mode 100644 message_auto_subscribe_notify_own/security/ir.model.access.csv
create mode 100644 message_auto_subscribe_notify_own/tests/__init__.py
create mode 100644 message_auto_subscribe_notify_own/tests/test_fake_model.py
create mode 100644 message_auto_subscribe_notify_own/tests/test_message_auto_subscribe_notify_own.py
create mode 100644 message_auto_subscribe_notify_own/views/auto_subscribe_notify_own_model.xml
diff --git a/message_auto_subscribe_notify_own/README.rst b/message_auto_subscribe_notify_own/README.rst
index 880987b7..6dc095f6 100644
--- a/message_auto_subscribe_notify_own/README.rst
+++ b/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
+* Hector Villarreal Ortega
Maintainers
~~~~~~~~~~~
diff --git a/message_auto_subscribe_notify_own/__init__.py b/message_auto_subscribe_notify_own/__init__.py
index 0650744f..967a6694 100644
--- a/message_auto_subscribe_notify_own/__init__.py
+++ b/message_auto_subscribe_notify_own/__init__.py
@@ -1 +1,2 @@
from . import models
+from .tests import test_fake_model
diff --git a/message_auto_subscribe_notify_own/__manifest__.py b/message_auto_subscribe_notify_own/__manifest__.py
index fdc837db..d3ccc20f 100644
--- a/message_auto_subscribe_notify_own/__manifest__.py
+++ b/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'
+ ]
}
diff --git a/message_auto_subscribe_notify_own/models/__init__.py b/message_auto_subscribe_notify_own/models/__init__.py
index b70a9f2d..080eccd8 100644
--- a/message_auto_subscribe_notify_own/models/__init__.py
+++ b/message_auto_subscribe_notify_own/models/__init__.py
@@ -1 +1,2 @@
+from . import auto_subscribe_notify_own_model
from . import mail_thread
diff --git a/message_auto_subscribe_notify_own/models/auto_subscribe_notify_own_model.py b/message_auto_subscribe_notify_own/models/auto_subscribe_notify_own_model.py
new file mode 100644
index 00000000..b92b431f
--- /dev/null
+++ b/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
diff --git a/message_auto_subscribe_notify_own/models/mail_thread.py b/message_auto_subscribe_notify_own/models/mail_thread.py
index b930ba21..41d6dc1f 100644
--- a/message_auto_subscribe_notify_own/models/mail_thread.py
+++ b/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
diff --git a/message_auto_subscribe_notify_own/readme/CONFIGURE.rst b/message_auto_subscribe_notify_own/readme/CONFIGURE.rst
new file mode 100644
index 00000000..9219e3ad
--- /dev/null
+++ b/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
diff --git a/message_auto_subscribe_notify_own/readme/CONTRIBUTORS.rst b/message_auto_subscribe_notify_own/readme/CONTRIBUTORS.rst
index 6860affe..429ffaf6 100644
--- a/message_auto_subscribe_notify_own/readme/CONTRIBUTORS.rst
+++ b/message_auto_subscribe_notify_own/readme/CONTRIBUTORS.rst
@@ -1 +1,2 @@
* Jordi Ballester Alomar
+* Hector Villarreal Ortega
diff --git a/message_auto_subscribe_notify_own/readme/DESCRIPTION.rst b/message_auto_subscribe_notify_own/readme/DESCRIPTION.rst
index 2a74c7da..15380877 100644
--- a/message_auto_subscribe_notify_own/readme/DESCRIPTION.rst
+++ b/message_auto_subscribe_notify_own/readme/DESCRIPTION.rst
@@ -6,4 +6,4 @@ In general Odoo will notify other users in this situation, but not the own
user who has performed the action.
But in certain situations it is better that you receive this notification, as
-a reminder sent to your mailbox that you are now responsible for that object.
\ No newline at end of file
+a reminder sent to your mailbox that you are now responsible for that object.
diff --git a/message_auto_subscribe_notify_own/security/ir.model.access.csv b/message_auto_subscribe_notify_own/security/ir.model.access.csv
new file mode 100644
index 00000000..dee20426
--- /dev/null
+++ b/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
diff --git a/message_auto_subscribe_notify_own/static/description/index.html b/message_auto_subscribe_notify_own/static/description/index.html
index 75b14540..8ea6ea2c 100644
--- a/message_auto_subscribe_notify_own/static/description/index.html
+++ b/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. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
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.
@@ -378,23 +378,31 @@ a reminder sent to your mailbox that you are now responsible for that object.
Table of contents
+
+
+
Configure models you want to be notified on your own creation
+
+- Go to Settings > Technical > Email > Notify Own Models
+
+
-
+
Assign yourself as salesperson of a lead/opportunity, for example, and you
will see that you’ll receive a notification.
-
+
Bugs are tracked on GitHub 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
@@ -402,21 +410,22 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
Do not contact contributors directly about support or help with technical issues.
-
+
-
+
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
diff --git a/message_auto_subscribe_notify_own/tests/__init__.py b/message_auto_subscribe_notify_own/tests/__init__.py
new file mode 100644
index 00000000..69a65e7e
--- /dev/null
+++ b/message_auto_subscribe_notify_own/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_message_auto_subscribe_notify_own
diff --git a/message_auto_subscribe_notify_own/tests/test_fake_model.py b/message_auto_subscribe_notify_own/tests/test_fake_model.py
new file mode 100644
index 00000000..3af2da8f
--- /dev/null
+++ b/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')
diff --git a/message_auto_subscribe_notify_own/tests/test_message_auto_subscribe_notify_own.py b/message_auto_subscribe_notify_own/tests/test_message_auto_subscribe_notify_own.py
new file mode 100644
index 00000000..08aca84e
--- /dev/null
+++ b/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')
diff --git a/message_auto_subscribe_notify_own/views/auto_subscribe_notify_own_model.xml b/message_auto_subscribe_notify_own/views/auto_subscribe_notify_own_model.xml
new file mode 100644
index 00000000..7778c647
--- /dev/null
+++ b/message_auto_subscribe_notify_own/views/auto_subscribe_notify_own_model.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+ auto.subscribe.notify.own.model.tree
+ auto.subscribe.notify.own.model
+ 10
+
+
+
+
+
+
+
+
+
+
+ Notify Own Models
+ auto.subscribe.notify.own.model
+ form
+ tree,form
+
+
+
+