From 4525d65ad725eee81c4aab1006fc606a355cc31c Mon Sep 17 00:00:00 2001 From: Prakash Prajapati Date: Tue, 15 Feb 2022 13:06:37 +0000 Subject: [PATCH] [IMP] project_sms: send sms at stage change of project and task The purpose of this commit is to include SMS templates. Templates allow people to customize the content of sent SMS. When the project/task stage changes, the user will be notified and there will be a track in the chatter. - add this field on the right of the 'email template' one in list view. optional and hidden by default. - add it below the 'name' quick search in the search view. task-2683575 closes odoo/odoo#81311 Related: odoo/enterprise#22853 Signed-off-by: Laurent Stukkens (ltu) --- addons/project_sms/__init__.py | 4 ++ addons/project_sms/__manifest__.py | 20 ++++++++++ addons/project_sms/models/__init__.py | 7 ++++ addons/project_sms/models/project.py | 25 +++++++++++++ addons/project_sms/models/project_stage.py | 11 ++++++ addons/project_sms/models/project_task.py | 25 +++++++++++++ .../project_sms/models/project_task_type.py | 11 ++++++ .../project_sms/security/ir.model.access.csv | 2 + .../security/project_sms_security.xml | 10 +++++ .../project_sms/views/project_stage_views.xml | 36 ++++++++++++++++++ .../views/project_task_type_views.xml | 37 +++++++++++++++++++ 11 files changed, 188 insertions(+) create mode 100644 addons/project_sms/__init__.py create mode 100644 addons/project_sms/__manifest__.py create mode 100644 addons/project_sms/models/__init__.py create mode 100644 addons/project_sms/models/project.py create mode 100644 addons/project_sms/models/project_stage.py create mode 100644 addons/project_sms/models/project_task.py create mode 100644 addons/project_sms/models/project_task_type.py create mode 100644 addons/project_sms/security/ir.model.access.csv create mode 100644 addons/project_sms/security/project_sms_security.xml create mode 100644 addons/project_sms/views/project_stage_views.xml create mode 100644 addons/project_sms/views/project_task_type_views.xml diff --git a/addons/project_sms/__init__.py b/addons/project_sms/__init__.py new file mode 100644 index 00000000000..dc5e6b693d1 --- /dev/null +++ b/addons/project_sms/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import models diff --git a/addons/project_sms/__manifest__.py b/addons/project_sms/__manifest__.py new file mode 100644 index 00000000000..3862d9dc16e --- /dev/null +++ b/addons/project_sms/__manifest__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +{ + 'name': "Project - SMS", + 'summary': 'Send text messages when project/task stage move', + 'description': "Send text messages when project/task stage move", + 'category': 'Hidden', + 'version': '1.0', + 'depends': ['project', 'sms'], + 'data': [ + 'views/project_stage_views.xml', + 'views/project_task_type_views.xml', + 'security/ir.model.access.csv', + 'security/project_sms_security.xml', + ], + 'application': False, + 'auto_install': True, + 'license': 'LGPL-3', +} diff --git a/addons/project_sms/models/__init__.py b/addons/project_sms/models/__init__.py new file mode 100644 index 00000000000..e3234323c64 --- /dev/null +++ b/addons/project_sms/models/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import project_task_type +from . import project_task +from . import project_stage +from . import project diff --git a/addons/project_sms/models/project.py b/addons/project_sms/models/project.py new file mode 100644 index 00000000000..b5ca63698a2 --- /dev/null +++ b/addons/project_sms/models/project.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, models + + +class ProjectProject(models.Model): + _inherit = "project.project" + + def _send_sms(self): + for project in self: + if project.partner_id and project.stage_id and project.stage_id.sms_template_id: + project._message_sms_with_template(template=project.stage_id.sms_template_id, partner_ids=project.partner_id.ids) + + @api.model_create_multi + def create(self, vals_list): + projects = super().create(vals_list) + projects._send_sms() + return projects + + def write(self, vals): + res = super().write(vals) + if 'stage_id' in vals: + self._send_sms() + return res diff --git a/addons/project_sms/models/project_stage.py b/addons/project_sms/models/project_stage.py new file mode 100644 index 00000000000..67a3e3ee27d --- /dev/null +++ b/addons/project_sms/models/project_stage.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class ProjectProjectStage(models.Model): + _inherit = 'project.project.stage' + + sms_template_id = fields.Many2one('sms.template', string="SMS Template", + domain=[('model', '=', 'project.project')], help="Template used to render SMS reminder content.") diff --git a/addons/project_sms/models/project_task.py b/addons/project_sms/models/project_task.py new file mode 100644 index 00000000000..ff7e4d7b096 --- /dev/null +++ b/addons/project_sms/models/project_task.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, models + + +class ProjectTask(models.Model): + _inherit = "project.task" + + def _send_sms(self): + for task in self: + if task.partner_id and task.stage_id and task.stage_id.sms_template_id: + task._message_sms_with_template(template=task.stage_id.sms_template_id, partner_ids=task.partner_id.ids) + + @api.model_create_multi + def create(self, vals_list): + tasks = super().create(vals_list) + tasks._send_sms() + return tasks + + def write(self, vals): + res = super().write(vals) + if 'stage_id' in vals: + self._send_sms() + return res diff --git a/addons/project_sms/models/project_task_type.py b/addons/project_sms/models/project_task_type.py new file mode 100644 index 00000000000..55f0de0af41 --- /dev/null +++ b/addons/project_sms/models/project_task_type.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class ProjectTaskType(models.Model): + _inherit = "project.task.type" + + sms_template_id = fields.Many2one('sms.template', string="SMS Template", + domain=[('model', '=', 'project.task')], help="Template used to render SMS reminder content.") diff --git a/addons/project_sms/security/ir.model.access.csv b/addons/project_sms/security/ir.model.access.csv new file mode 100644 index 00000000000..cac3c45a4ad --- /dev/null +++ b/addons/project_sms/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_sms_template_project_manager,access.sms.template.project.manager,sms.model_sms_template,project.group_project_manager,1,1,1,1 diff --git a/addons/project_sms/security/project_sms_security.xml b/addons/project_sms/security/project_sms_security.xml new file mode 100644 index 00000000000..75dd456ffc5 --- /dev/null +++ b/addons/project_sms/security/project_sms_security.xml @@ -0,0 +1,10 @@ + + + + SMS Template: project manager CUD on project/task + + + [('model_id.model', 'in', ('project.task.type', 'project.project.stage'))] + + + diff --git a/addons/project_sms/views/project_stage_views.xml b/addons/project_sms/views/project_stage_views.xml new file mode 100644 index 00000000000..3658a8aa1a3 --- /dev/null +++ b/addons/project_sms/views/project_stage_views.xml @@ -0,0 +1,36 @@ + + + + project.project.stage.view.tree.inherit.project.sms + project.project.stage + + + + + + + + + + project.project.stage.view.form.inherit.project.sms + project.project.stage + + + + + + + + + + project.project.stage.view.search.inherit.project.sms + project.project.stage + + + + + + + + + diff --git a/addons/project_sms/views/project_task_type_views.xml b/addons/project_sms/views/project_task_type_views.xml new file mode 100644 index 00000000000..391f945d69b --- /dev/null +++ b/addons/project_sms/views/project_task_type_views.xml @@ -0,0 +1,37 @@ + + + + + project.task.type.view.form.inherit.project.sms + project.task.type + + + + + + + + + + project.task.type.view.tree.inherit.project.sms + project.task.type + + + + + + + + + + project.task.type.view.search.inherit.project.sms + project.task.type + + + + + + + + +