diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/sms/wizard/sms_cancel.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/sms/wizard/sms_cancel.py')
| -rw-r--r-- | addons/sms/wizard/sms_cancel.py | 38 |
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'} |
