Блог

Как создать правила для записей в Odoo 19

post-title

Представьте, что вы управляете компанией, где постоянно перемещаются конфиденциальные данные. Вы хотите быть уверены, что доступ к ним имеют только нужные люди, верно? Вот тут-то и пригодятся правила записей Odoo 19. Это как скрытый инструмент, позволяющий контролировать, кто может видеть, изменять или удалять данные. Будь то обеспечение безопасности информации о клиентах или оптимизация командной работы, знание того, как использовать правила записей, чрезвычайно важно. Это помогает вам следовать правилам, быть эффективным и меньше беспокоиться. В этом руководстве мы шаг за шагом покажем вам, как создавать эти правила на реальном примере. Готовы сделать Odoo еще лучше? Давайте начнем!

Что делают правила записи в Odoo?

Прежде чем начать, давайте разберемся с правилами для записей. В Odoo правила для записей (в модели ir.rule) — это своего рода фильтры, которые ограничивают доступ к записям в зависимости от прав пользователя. Они работают с правами доступа для обеспечения безопасности. Например, вы можете разрешить пользователям изменять только те записи, которые они создали или получили.

Правила для записей обычно задаются в XML-файлах внутри ваших пользовательских модулей. Это гарантирует их одинаковое использование повсюду. В Odoo 19 это похоже на более старые версии, но может лучше подходить для больших объемов данных. Однако основной способ их написания остается тем же.

Пошаговое создание правила записи

Чтобы создать правило записи, просто запишите его в виде XML-записи в файлы данных вашего модуля (например, в security/ir.model.access.csv или в отдельный XML-файл). Вот пример из Odoo, созданный для модели mail.activity . Это правило позволяет пользователям записывать или удалять действия, но только если они сами их создали или назначены им.


   mail.activity: user: write/unlink only (created or assigned)
   
   ['|', ('user_id', '=', user.id), ('create_uid', '=', user.id)]
   
   
   
   
   

Этот XML-фрагмент создает новое правило. Давайте разберем его по частям, подробно определив каждый атрибут (или поле):

  • id : Это уникальный идентификатор правила записи, например, "mail_activity_rule_user". Он должен быть уникальным в рамках модуля и используется для ссылок или обновлений. Представьте его как отпечаток правила в базе данных.
  • model : значение " ir.rule " указывает на то, что мы создаём запись в модели ir.rule , которая является встроенной моделью Odoo для определения правил доступа.
  • name : Удобочитаемая метка, например, " mail.activity: user: write/unlink only (created or assigned) ". Это помогает администраторам идентифицировать правило в интерфейсе бэкэнда в разделе "Настройки" > "Технические" > "Безопасность" > "Правила записей".
  • model_id : Ссылается на целевую модель, к которой применяется правило, используя ref="model_mail_activity" . Здесь он указывает на модель mail.activity (действия, такие как задачи или напоминания). Атрибут ref ищет идентификатор записи ir.model для этой модели.
  • domain_force : Это ядро ​​правила — выражение домена, которое фильтрует записи. В данном случае [ '|', ('user_id', '=', user.id), ('create_uid', '=', user.id) ] означает: разрешить доступ, если действие назначено текущему пользователю ( user_id = user.id ) ИЛИ если пользователь создал его ( create_uid = user.id ). Домены используют стандартный синтаксис Odoo: списки кортежей для условий, с операторами типа ' | ' для ИЛИ и ' & ' для И.
  • groups : Определяет, к каким группам пользователей применяется это правило, используя eval="[Command.link(ref('base.group_user'))]" . Это ссылка на группу "Внутренние пользователи" ( base.group_user ). Command.link — это команда Odoo ORM для добавления связи "многие ко многим". Вы можете применять правила глобально (без групп) или к конкретным группам.
  • perm_create : Логическое значение ( eval="False" ), указывающее, предоставляет ли это правило разрешение на создание записей. В данном случае значение равно False, что означает, что это правило не разрешает создание новых записей — это регулируется правами доступа.
  • perm_read : Логическое значение ( eval="False" ), управляет доступом на чтение. Установите значение False, чтобы это правило не предоставляло права на чтение; пользователи могут читать через другие правила или глобальный доступ.
  • perm_write : Логическое значение ( eval="True" ), позволяет редактировать (записывать) соответствующие записи.
  • perm_unlink : Логическое значение ( eval="True" ), разрешает удаление (отмену связи) для соответствующих записей.

После установки модуля вы сможете просмотреть созданное правило записи, перейдя в Настройки > Технические > Безопасность > Правила записи.

Ниже в виде списка вы можете увидеть созданное правило.

Если вы нажмете « Открыть », вы сможете просмотреть форму правила записи, как показано ниже.

На приведенных ниже скриншотах вы можете увидеть действия, созданные администратором пользователя.

На скриншотах ниже видно, что никаких действий не отображается; это потому, что текущий авторизованный пользователь не является тем, кто создал эти действия или был назначен на них.

Чтобы реализовать это в вашем модуле Odoo 19:

  1. Добавьте XML-код в файл, например, security/record_rules.xml, в вашем модуле.
  2. Укажите ссылку на него в файле __manifest__.py вашего модуля в разделе ' data '.
  3. Установите или обновите модуль через интерфейс Odoo или командную строку ( odoo-bin -u your_module ).
  4. Для проверки войдите в систему под разными пользователями и попробуйте выполнить действия с соответствующими записями.

Краткий совет: для обеспечения полной безопасности всегда связывайте правила записей с правами доступа (в ir.model.access ). Если у вас возникли проблемы, просмотрите журналы Odoo или представления ir.rule.

 

Итак, вот как создавать правила для записей в Odoo 19. Это простой, но эффективный способ обеспечить безопасность ваших данных и контролировать, кто что видит. Установив определенные правила и разрешения, вы можете превратить свою ERP-систему из хаоса в безопасное пространство. Независимо от того, настраиваете ли вы систему для небольшой команды или крупной компании, эти правила помогут вам держать все под контролем и при этом позволят людям выполнять свою работу. Заходите в Odoo!