mail/models/res_config_settings.py

96 lines
4.0 KiB
Python
Raw Normal View History

2024-05-03 12:40:35 +03:00
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import datetime
from odoo import _, fields, models
from odoo.exceptions import UserError
class ResConfigSettings(models.TransientModel):
""" Inherit the base settings to add a counter of failed email + configure
the alias domain. """
_inherit = 'res.config.settings'
external_email_server_default = fields.Boolean(
"Use Custom Email Servers",
config_parameter='base_setup.default_external_email_server')
fail_counter = fields.Integer('Fail Mail', compute="_compute_fail_counter")
alias_domain_id = fields.Many2one(
'mail.alias.domain', 'Alias Domain',
readonly=False, related='company_id.alias_domain_id',
help="If you have setup a catch-all email domain redirected to the Odoo server, enter the domain name here.")
module_google_gmail = fields.Boolean('Support Gmail Authentication')
module_microsoft_outlook = fields.Boolean('Support Outlook Authentication')
restrict_template_rendering = fields.Boolean(
'Restrict Template Rendering',
config_parameter='mail.restrict.template.rendering',
help='Users will still be able to render templates.\n'
'However only Mail Template Editors will be able to create new dynamic templates or modify existing ones.')
use_twilio_rtc_servers = fields.Boolean(
'Use Twilio ICE servers',
help="If you want to use twilio as TURN/STUN server provider",
config_parameter='mail.use_twilio_rtc_servers',
)
twilio_account_sid = fields.Char(
'Twilio Account SID',
config_parameter='mail.twilio_account_sid',
)
twilio_account_token = fields.Char(
'Twilio Account Auth Token',
config_parameter='mail.twilio_account_token',
)
sfu_server_url = fields.Char("SFU Server URL", config_parameter="mail.sfu_server_url")
sfu_server_key = fields.Char("SFU Server key", config_parameter="mail.sfu_server_key", help="Base64 encoded key")
email_primary_color = fields.Char(related='company_id.email_primary_color', readonly=False)
email_secondary_color = fields.Char(related='company_id.email_secondary_color', readonly=False)
tenor_api_key = fields.Char(
'Tenor API key',
config_parameter='discuss.tenor_api_key',
help="Add a Tenor GIF API key to enable GIFs support. https://developers.google.com/tenor/guides/quickstart#setup",
)
tenor_content_filter = fields.Selection(
[('high', 'High'),
('medium', 'Medium'),
('low', 'Low'),
('off', 'Off')],
string='Tenor content filter',
help="https://developers.google.com/tenor/guides/content-filtering",
config_parameter='discuss.tenor_content_filter',
default='low',
)
tenor_gif_limit = fields.Integer(
default=8,
config_parameter='discuss.tenor_gif_limit',
help="Fetch up to the specified number of GIF.",
)
google_translate_api_key = fields.Char(
"Message Translation API Key",
help="A valid Google API key is required to enable message translation. https://cloud.google.com/translate/docs/setup",
config_parameter="mail.google_translate_api_key",
)
def _compute_fail_counter(self):
previous_date = fields.Datetime.now() - datetime.timedelta(days=30)
self.fail_counter = self.env['mail.mail'].sudo().search_count([
('date', '>=', previous_date),
('state', '=', 'exception'),
])
def open_email_layout(self):
layout = self.env.ref('mail.mail_notification_layout', raise_if_not_found=False)
if not layout:
raise UserError(_("This layout seems to no longer exist."))
return {
'type': 'ir.actions.act_window',
'name': _('Mail Layout'),
'view_mode': 'form',
'res_id': layout.id,
'res_model': 'ir.ui.view',
}
def open_mail_templates(self):
return self.env['ir.actions.actions']._for_xml_id('mail.action_email_template_tree_all')