odoo18/addons/sale/models/mail_scheduled_message.py

28 lines
1.2 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
import json
from odoo import api, models
class ScheduledMessage(models.Model):
_inherit = 'mail.scheduled.message'
def _post_message(self, raise_exception=True):
order_messages = self.env['mail.scheduled.message'].with_context(mark_so_as_sent=True)
for scheduled_message in self:
notification_parameters = json.loads(scheduled_message.notification_parameters or '{}')
if 'mark_so_as_sent' not in notification_parameters:
continue
if notification_parameters.pop('mark_so_as_sent'):
order_messages += scheduled_message
scheduled_message.notification_parameters = json.dumps(notification_parameters)
if order_messages:
super(ScheduledMessage, order_messages)._post_message(raise_exception=raise_exception)
if remaining := self - order_messages:
super(ScheduledMessage, remaining)._post_message(raise_exception=raise_exception)
@api.model
def _notification_parameters_whitelist(self):
return super()._notification_parameters_whitelist() | {'mark_so_as_sent'}