RATIONALE A bit of history. Link between a message and its recipients has been added at first mail refactoring towards a Chatter / Discuss feature. It was done in v7 atd64f3c9783with the base addition of mail notification model (lots of commits follow that one but that's the first one about notification). Due to some people thinking that it was unnecessary to keep a model for notification it has been removed in v9 at88b8cd0587. Notification table was renamed from mail_notification to mail_message_res_partner_needaction_rel. It was proven to be a mistake even if those "some people" were warned and model made its way back to Odoo in v10 at72dfcae2a4. Table name mail_message _res_partner_needaction_rel was kept to ease migration and backward compatibility. It is now time to complete the circle and rename it to mail_notification. SPECIFICATIONS Rename ``mail_message_res_partner_needaction_rel`` to ``mail_notification`` . RIP JEM. Never forget. LINKS Task ID-2477444 Prepares Task ID-2377974 (trace management cleaning task) Prepares Task ID-2070632 (channel members main task) Prepares Task ID-2419762 (channel members followup task) COM PR odoo/odoo#67382 UPG PR odoo/upgrade#2245 Co-Authored-By: Rémy Voet <ryv@odoo.com> Co-Authored-By: Thibault Delavallée <tde@odoo.com>
39 lines
1.6 KiB
Python
39 lines
1.6 KiB
Python
# -*- 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_notification 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'}
|