Currently, all the methods that start with `get_default_` and `set_` are called on a res.config.settings loading or saving.
This commit purpose is to replace all the occurences of `get_default_foo` and `set_foo`. As these methods won't be called anymore, a warning is logged to notice its deprecation.
The generic method `get_default_fields` and `set_fields` could be improved too. The method names and API are not so good:
Why "default" fields? What you ask for is the current value of the stuff, shown as fields in the model. The values are fed as default values in the wizard, but that's an implementation trick.
Why "fields"? What you ask for are configuration parameters, and such things.
Why passing a list of fields? Its value is never used.
We should further simplify the API of both methods to something like
def get_values(self):
return {}
def set_values(self):
pass
46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import datetime
|
|
|
|
from werkzeug import urls
|
|
|
|
from odoo import api, fields, models, tools
|
|
|
|
|
|
class BaseConfigSettings(models.TransientModel):
|
|
""" Inherit the base settings to add a counter of failed email + configure
|
|
the alias domain. """
|
|
_inherit = 'base.config.settings'
|
|
|
|
fail_counter = fields.Integer('Fail Mail', readonly=True)
|
|
alias_domain = fields.Char('Alias Domain', help="If you have setup a catch-all email domain redirected to "
|
|
"the Odoo server, enter the domain name here.")
|
|
|
|
@api.model
|
|
def get_values(self):
|
|
res = super(BaseConfigSettings, self).get_values()
|
|
|
|
previous_date = datetime.datetime.now() - datetime.timedelta(days=30)
|
|
|
|
alias_domain = self.env["ir.config_parameter"].get_param("mail.catchall.domain", default=None)
|
|
if alias_domain is None:
|
|
domain = self.env["ir.config_parameter"].get_param("web.base.url")
|
|
try:
|
|
alias_domain = urls.url_parse(domain).host
|
|
except Exception:
|
|
pass
|
|
|
|
res.update(
|
|
fail_counter=self.env['mail.mail'].sudo().search_count([
|
|
('date', '>=', previous_date.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)),
|
|
('state', '=', 'exception')]),
|
|
alias_domain=alias_domain or False,
|
|
)
|
|
|
|
return res
|
|
|
|
def set_values(self):
|
|
super(BaseConfigSettings, self).set_values()
|
|
self.env['ir.config_parameter'].set_param("mail.catchall.domain", self.alias_domain or '')
|