res.config.settings¶
Based on https://github.com/odoo/odoo/blob/10.0/odoo/addons/base/res/res_config.py
`` res.config.settings`` - мастер базовой конфигурации для настроек приложения. Он обеспечивает поддержку установки значений по умолчанию, назначения групп пользователям-сотрудникам и установки модулей. Чтобы создать такой мастер настройки, определите модель, например:
class MyConfigWizard(models.TransientModel):
_name = 'my.settings'
_inherit = 'res.config.settings'
default_foo = fields.type(..., default_model='my.model')
group_bar = fields.Boolean(..., group='base.group_user', implied_group='my.group')
module_baz = fields.Boolean(...)
other_field = fields.type(...)
Метод `` execute`` (кнопка * Apply *) обеспечивает некоторую поддержку, основанную на соглашении об именах:
- Для поля типа `` default_XXX``, `` execute`` устанавливает (глобальное) значение по умолчанию поля `` XXX`` в модели, названной `` default_model``, равным значению поля.
- Для логического поля, такого как `` group_XXX``, `` execute`` добавляет / удаляет 'implied_group' в / из подразумеваемых групп 'group', в зависимости от значения поля. По умолчанию «группа» - это группа «Сотрудник». Группы задаются своим идентификатором xml. Атрибут group может содержать несколько идентификаторов xml, разделенных запятыми.
- Для логического поля, подобного `` module_XXX``, `` execute`` запускает немедленную установку модуля с именем `` XXX``, если поле имеет значение `` True``.
- Для других полей метод `` execute`` вызывает все методы с именем, которое начинается с `` set_``; такие методы могут быть определены для реализации эффекта этих полей.
Метод `` default_get`` извлекает значения, отражающие текущее состояние полей, таких как `` default_XXX``, `` group_XXX`` и `` module_XXX``. Он также вызывает все методы с именем, которое начинается с `` get_default_``; такие методы могут быть определены для предоставления текущих значений для других полей.
пример¶
from openerp import models, fields, api
PARAMS = [
("login", "apps_odoo_com.login"),
("password", "apps_odoo_com.password"),
]
class Settings(models.TransientModel):
_name = 'apps_odoo_com.settings'
_inherit = 'res.config.settings'
login = fields.Char("Login")
password = fields.Char("Password")
@api.multi
def set_params(self):
self.ensure_one()
for field_name, key_name in PARAMS:
value = getattr(self, field_name, '').strip()
self.env['ir.config_parameter'].set_param(key_name, value)
def get_default_params(self, cr, uid, fields, context=None):
res = {}
for field_name, key_name in PARAMS:
res[field_name] = self.env['ir.config_parameter'].get_param(key_name, '').strip()
return res
Обновление настроек при установке модуля¶
Чтобы обновить настройки из любого `` res.config.settings``, выполните следующие действия:
default_XXX¶
СДЕЛАТЬ
group_XXX¶
Добавьте ** подразумеваемую группу (ы) ** к ** группе ** через поле `` implied_ids``
<record model="res.groups" id="base.group_user">
<field name="implied_ids" eval="[
(4, ref('my.group'))
]"/>
</record>
module_XXX¶
Добавьте XXX к параметру зависимость в файле __manifest__.py.
Другие поля¶
Обычно другие поля сохраняются в `` ir.config_parameter``, поэтому просто update ir.config_parameter, например
<function model="ir.config_parameter" name="set_param" eval="(
'pos_debt_notebook.debt_type', 'credit'
)" />