Files
odoo_source/addons/mail/models/res_config_settings.py
T
Thibault Delavallée 50762307e4 [IMP] base, mail: split company email colors from document colors
PURPOSE

Settings allow to change colors used in emails (primary and secondary colors).
Those are used for headers and buttons. They are currently shared with colors
used for base documents and reports layout: changing email colors change
documents colors, which is not expected nor clearly indicated.

SPECIFICATIONS

Split configuration: colors used in documents may differ from colors used in
emails. Duplicate color fields (primary and secondary). To ease setup when
updating documents colors, update mail colors accordingly. Inverse is not
true as we consider documents being the main configuration, and emails a
more fine-grain configuration.

Task-3346388

Part-of: odoo/odoo#123678
2023-07-10 16:59:11 +02:00

85 lines
3.4 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'
fail_counter = fields.Integer('Fail Mail', compute="_compute_fail_counter")
alias_domain = fields.Char(
'Alias Domain', config_parameter='mail.catchall.domain',
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',
)
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.",
)
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')