Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
1971 Widoki

I am trying to better organize my XML code in Odoo 18 by grouping records in a more structured way.

1. Currently, I have multiple fields with the groups attribute, but I want to know if there’s a better way to group permissions by record.


<odoo>

<record id="view_repair_order_list_custom" model="ir.ui.view">

<field name="name">repair.order.list.custom</field>

<field name="model">repair.order</field>

<field name="inherit_id" ref="repair.view_repair_order_tree" />

<field name="arch" type="xml">

<xpath expr="//list" position="attributes">

<attribute name="action">action_open_ticket_with_popup</attribute>

</xpath>


<xpath expr="//list" position="replace">

<list edit="0" string="Repair Orders" decoration-info="state == 'draft'"

create="1" delete="0" expand="1">

<!-- Campos para el grupo Mining con disable-click -->

<field name="name" readonly="1" string="Repair Reference" class="disable-click"

groups="custom_repair_module.group_mining,custom_repair_module.group_micro" />

<field name="schedule_date" string="Scheduled Date" widget="remaining_days"

readonly="1"

class="disable-click" groups="custom_repair_module.group_mining" />

<field name="product_id" string="Product to Repair" readonly="1"

class="disable-click"

groups="custom_repair_module.group_mining,custom_repair_module.group_micro" />

<field name="lot_id" string="Serial Number" readonly="1" class="disable-click"

groups="custom_repair_module.group_mining,custom_repair_module.group_micro" />

<field name="lot_ref" string="Position" readonly="1" class="disable-click"

groups="custom_repair_module.group_mining,custom_repair_module.group_micro" />

<field name="state" class="col-6 text-end disable-click"

widget="label_selection"

readonly="1"

groups="custom_repair_module.group_mining,custom_repair_module.group_micro"

options="{'classes': {

'draft': 'info',

'confirmed': 'light',

'under_repair': 'warning',

'ready_for_rack': 'dark',

'done': 'success',

'cancel': 'danger'

}}" />

<field name="tag_ids" widget="many2many_tags"

options="{'color_field': 'color'}"

class="col-12 text-center disable-click"

groups="custom_repair_module.group_micro" />

<button name="action_open_ticket_with_popup" type="object"

string="Open Ticket"

icon="fa-ticket" class="oe_stat_button w-100% col-12"

groups="custom_repair_module.group_mining"

invisible="state not in ('draft', 'ready_for_rack')" />


<button string="No action available for this state" type="object"

class="disable-click text-muted oe_stat_button w-100% col-12"

groups="custom_repair_module.group_mining"

invisible="state in ('draft', 'ready_for_rack')" />

<button name="action_open_ticket_with_popup" type="object" string="Open Ticket"

icon="fa-ticket" class="oe_stat_button w-100% col-12"

groups="custom_repair_module.group_micro"

invisible="state not in ('confirmed')" />

<button string="No action available for this state" type="object"

class="disable-click text-muted oe_stat_button w-100% col-12"

groups="custom_repair_module.group_micro" invisible="state in ('confirmed')" /> <!--

Campos para otros grupos (sin disable-click) -->

<field name="name" readonly="1" string="Repair Reference"

groups="custom_repair_module.group_noc" />

<field name="schedule_date" string="Scheduled Date" widget="remaining_days"

readonly="1"

groups="custom_repair_module.group_noc" />

<field name="product_id" string="Product to Repair" readonly="1"

groups="custom_repair_module.group_noc" />

<field name="lot_id" string="Serial Number" readonly="1"

groups="custom_repair_module.group_noc" />

<field name="lot_ref" string="Position" readonly="1"

groups="custom_repair_module.group_noc" />

<field name="state" class="col-6 text-end" widget="label_selection"

readonly="1"

groups="custom_repair_module.group_noc"

options="{'classes': {

'draft': 'info',

'confirmed': 'light',

'under_repair': 'warning',

'ready_for_rack': 'dark',

'done': 'success',

'cancel': 'danger'

}}" />

<field name="tag_ids" widget="many2many_tags"

options="{'color_field': 'color'}"

groups="custom_repair_module.group_noc" />

</list>

</xpath>


</field>

</record>


<!-- Reglas de seguridad -->

<!-- Restricción para el grupo Mining -->

<record id="repair_order_rule_mining" model="ir.rule">

<field name="name">Restrict Mining Users</field>

<field name="model_id" ref="repair.model_repair_order" />

<field name="domain_force">[(1, '=', 1)]</field>

<field name="groups" eval="[(4, ref('custom_repair_module.group_mining'))]" />

</record>


<!-- Permiso completo para el grupo NOC -->

<record id="repair_order_rule_noc" model="ir.rule">

<field name="name">Allow NOC Users</field>

<field name="model_id" ref="repair.model_repair_order" />

<field name="domain_force">[(1, '=', 1)]</field>

<field name="groups" eval="[(4, ref('custom_repair_module.group_noc'))]" />

</record>

</odoo>


2. I tried using groups_id inside the <record>, like this:

<field name="groups_id" eval="[(6, 0, [ref('base.group_manager')])]"/>

But I get the following error:

“An inherited view cannot have ‘groups’ defined in the record. Use the ‘groups’ attribute inside the view definition.”


My goal is to group permissions and configurations by record instead of referencing groups multiple times within fields and buttons.


How can I properly structure my code to apply group restrictions in a more organized way and avoid this error?

Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
2
sty 21
5537
5
sie 24
46282
0
maj 24
1527
2
kwi 24
2368
3
cze 23
5485