46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
from odoo import api, fields, models
|
|
|
|
|
|
class MailNotification(models.Model):
|
|
_inherit = 'mail.notification'
|
|
|
|
failure_type = fields.Selection(
|
|
selection_add=[
|
|
('twilio_authentication', 'Authentication Error"'),
|
|
('twilio_callback', 'Incorrect callback URL'),
|
|
('twilio_from_missing', 'Missing From Number'),
|
|
('twilio_from_to', 'From / To identic'),
|
|
],
|
|
)
|
|
|
|
# CRUD
|
|
# ------------------------------------------------------------
|
|
|
|
@api.model
|
|
def fields_get(self, allfields=None, attributes=None):
|
|
# As we are adding keys in stable, better be sure no-one is getting crashes
|
|
# due to missing translations
|
|
# TODO: remove in master
|
|
res = super().fields_get(allfields=allfields, attributes=attributes)
|
|
|
|
existing_selection = res.get('failure_type', {}).get('selection')
|
|
if existing_selection is None:
|
|
return res
|
|
|
|
updated_stable = {
|
|
'twilio_authentication', 'twilio_callback',
|
|
'twilio_from_missing', 'twilio_from_to',
|
|
}
|
|
need_update = updated_stable - set(dict(self._fields['failure_type'].selection))
|
|
if need_update:
|
|
self.env['ir.model.fields'].invalidate_model(['selection_ids'])
|
|
self.env['ir.model.fields.selection']._update_selection(
|
|
self._name,
|
|
'failure_type',
|
|
self._fields['failure_type'].selection,
|
|
)
|
|
self.env.registry.clear_cache()
|
|
return super().fields_get(allfields=allfields, attributes=attributes)
|
|
|
|
return res
|