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'
)" />