diff --git a/message_auto_subscribe_notify_own/README.rst b/message_auto_subscribe_notify_own/README.rst index 880987b72..6dc095f63 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 0650744f6..967a6694a 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 fdc837db0..d3ccc20f4 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 b70a9f2d0..080eccd8b 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 000000000..b92b431fe --- /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 b930ba216..41d6dc1f3 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 000000000..9219e3adf --- /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 6860affe2..429ffaf61 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 2a74c7daa..153808778 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 000000000..dee204267 --- /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 75b14540c..8ea6ea2ca 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. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: LGPL-3 OCA/social Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/social Translate me on Weblate Try me on Runbot

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

+
+

Configuration

+

Configure models you want to be notified on your own creation

+
    +
  • Go to Settings > Technical > Email > Notify Own Models
  • +
+
-

Usage

+

Usage

Assign yourself as salesperson of a lead/opportunity, for example, and you will see that you’ll receive a notification.

-

Bug Tracker

+

Bug Tracker

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.

-

Credits

+

Credits

-

Authors

+

Authors

  • Eficent
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association

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 000000000..69a65e7e3 --- /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 000000000..3af2da8fe --- /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 000000000..08aca84ec --- /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 000000000..7778c6478 --- /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 + + + +