summaryrefslogtreecommitdiff
path: root/addons/sms/wizard/sms_cancel.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/sms/wizard/sms_cancel.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/sms/wizard/sms_cancel.py')
-rw-r--r--addons/sms/wizard/sms_cancel.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/addons/sms/wizard/sms_cancel.py b/addons/sms/wizard/sms_cancel.py
new file mode 100644
index 00000000..0587a9f0
--- /dev/null
+++ b/addons/sms/wizard/sms_cancel.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import _, api, fields, models
+
+
+class SMSCancel(models.TransientModel):
+ _name = 'sms.cancel'
+ _description = 'Dismiss notification for resend by model'
+
+ model = fields.Char(string='Model', required=True)
+ help_message = fields.Char(string='Help message', compute='_compute_help_message')
+
+ @api.depends('model')
+ def _compute_help_message(self):
+ for wizard in self:
+ wizard.help_message = _("Are you sure you want to discard %s SMS delivery failures? You won't be able to re-send these SMS later!") % (wizard._context.get('unread_counter'))
+
+ def action_cancel(self):
+ # TDE CHECK: delete pending SMS
+ author_id = self.env.user.partner_id.id
+ for wizard in self:
+ self._cr.execute("""
+SELECT notif.id, msg.id
+FROM mail_message_res_partner_needaction_rel notif
+JOIN mail_message msg
+ ON notif.mail_message_id = msg.id
+WHERE notif.notification_type = 'sms' IS TRUE AND notif.notification_status IN ('bounce', 'exception')
+ AND msg.model = %s
+ AND msg.author_id = %s """, (wizard.model, author_id))
+ res = self._cr.fetchall()
+ notif_ids = [row[0] for row in res]
+ message_ids = list(set([row[1] for row in res]))
+ if notif_ids:
+ self.env['mail.notification'].browse(notif_ids).sudo().write({'notification_status': 'canceled'})
+ if message_ids:
+ self.env['mail.message'].browse(message_ids)._notify_message_notification_update()
+ return {'type': 'ir.actions.act_window_close'}