96 lines
4.0 KiB
Python
96 lines
4.0 KiB
Python
# -*- 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 theTalismanserver, 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')
|