Как переопределить существующую группу res.groups модели в Odoo12? - PullRequest
2 голосов
/ 23 сентября 2019

Мне нужно переопределить существующую группу в пользовательском модуле и просто изменить ее поле implied_ids в другом пользовательском модуле.Я попытался использовать тот же код в моем модуле с изменениями в implied_ids, но у меня была ошибка ниже.Затем я попытался использовать поле inherit_id, но снова возникла ошибка идентификатора.Ниже приведена оригинальная группа в пользовательском модуле:

<record id="group_hms_jr_doctor" model="res.groups">
            <field name="name">Jr Doctor</field>
            <field name="category_id" ref="module_category_hms"/>
            <field name="implied_ids" eval="[(4, ref('acs_hms.group_hms_nurse')),(4, ref('acs_hms.group_hms_receptionist'))]"/>
            <field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
        </record>

, и я хочу просто удалить из нее секцию (4, ref('acs_hms.group_hms_receptionist')).Я попробовал приведенный ниже код, но эта ошибка возникает.

odoo.tools.convert.ParseError: "duplicate key value violates unique constraint "res_groups_name_uniq"
DETAIL:  Key (category_id, name)=(68, Jr Doctor) already exists.
" while parsing /home/ibrahim/workspace/odoo/hms/nl_hms/security/security.xml:5, near
<record id="group_hms_jr_doctor_inherited" model="res.groups">
        <field name="name">Jr Doctor</field>
        <field name="inherit_id" ref="acs_hms.group_hms_jr_doctor"/>
        <field name="category_id" ref="acs_hms.module_category_hms"/>
        <field name="implied_ids" eval="[(4, ref('acs_hms.group_hms_nurse'))]"/>
        <field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
    </record>

Как я могу переопределить любые существующие группы и изменить их?

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019

Чтобы обновить существующие записи, вы должны указать полный XML-ID этих записей (включая название приложения), а для удаления элемента из поля many2many используйте 3 command, это удалит элемент из поля x2manyно не удаляет его из базы данных:

<record id="acs_hms.group_hms_jr_doctor" model="res.groups">
    <field name="implied_ids" eval="[(3, ref('acs_hms.group_hms_receptionist'))]"/>
</group>

что здесь произойдет, если Odoo вызовет write на res.groups, а для добавления записи в поле x2many используется команда 4не будет влиять на поле вообще, потому что все записи готовы.

1 голос
/ 23 сентября 2019

Вы должны установить другой пользовательский модуль в качестве зависимости в своем пользовательском модуле, а затем просто "переопределить" нужные значения с помощью полного внешнего идентификатора в узле record.

<record id="acs_hms.group_hms_jr_doctor" model="res.groups">
    <field name="implied_ids" eval="[(3, ref('acs_hms.group_hms_nurse'))]"/>
</group>
...