Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC

This commit is contained in:
CI Publish Bot
2026-11-01 22:54:30 +00:00
commit 26250aa580
2492 changed files with 664277 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
<odoo>
<!--
Единое GLOBAL-правило видимости директив с диспетчерским bypass.
Почему одно global-правило, а не два (диспетчер / остальные):
в Odoo global-правила комбинируются по AND, а group-правила — по OR
и только РАСШИРЯЮТ доступ в пределах global. Поэтому global `own` НЕЛЬЗЯ
расширить group-правилом `all` для диспетчера (получилось бы own AND all = own).
Единственная форма, одновременно сохраняющая все три требования —
(1) диспетчер видит все,
(2) исполнитель/заявитель/автор видят только свои/ролевые,
(3) пользователь без ролей директив видит ноль строк (fail-closed),
— это одно global-правило с тернарным bypass для диспетчера.
Это осознанный, поведение-сохраняющий выбор (см. design.md §4.2),
а НЕ незавершённый рефактор «надо бы два правила».
Диспетчер (член role_directive_dispatcher_res_groups) -> домен [(1,'=',1)] (все).
Остальные -> 4 OR-условия через 3 оператора '|' (польская нотация):
своя как исполнитель / свои созданные / своя роль исполнителя / своя роль заявителя.
-->
<record id="rule_directive_base_access" model="ir.rule">
<field name="name">Directive: visibility (dispatcher sees all, others own/role)</field>
<field name="model_id" ref="model_directive_directive"/>
<field name="global" eval="True"/>
<field name="domain_force">[(1, '=', 1)] if user.has_group('directive_layer.role_directive_dispatcher_res_groups') else ['|', '|', '|', ('executor_user_id', '=', user.id), ('create_uid', '=', user.id), ('executor_role_id', 'in', user.role_ids.ids), ('requester_role_id', 'in', user.role_ids.ids)]</field>
</record>
</odoo>