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. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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 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 + + + +