2016-06-08 4 views
3

У меня есть задача в odoo 8, мне нужно создать группу пользователей с именем (picker), которая будет в наследовании группе пользователей склада. как диспетчер склада -> Пользователь ->. поэтому я создал пользователя следующим образом:odoo переопределить групповое разрешение на объект

<record id="warehouse_picker" model="res.groups"> 
    <field name="name">picker </field> 
    <field name="category_id" ref="base.module_category_warehouse_management"/> 
    <field name="implied_ids" eval="[(4, ref('base.group_user'))]" /> 
</record> 

также я добавил этот код, чтобы дать доступ склад меню для этого пользователя:

<record id="stock.group_stock_user" model="res.groups"> 
    <field name="implied_ids" eval="[(4, ref('warehouse_picker')),(4, ref('stock.group_locations'))]"/> 
</record> 

Теперь Группа Склад/Пользователь имеет правила доступа к объект (stock.picking) как 1,1,1,1. Мне нужно ограничить/Override это правило (stock.picking) на 1,0,0,0

Я попытался следующий код, но не работает:

<record id="warehouse_picker_rule" model="ir.rule"> 
    <field name="name">Warehouse Picker Rule</field> 
    <field name="model_id" ref="stock.model_stock_picking"/> 
    <field name="domain_force">[(1, '=', 1)]</field> 
    <field name="groups" eval="[(4, ref('warehouse_picker'))]"/> 
    <field name="perm_read" eval="False"/> 
    <field name="perm_write" eval="False"/> 
    <field name="perm_create" eval="False"/> 
    <field name="perm_unlink" eval="True"/> 
</record> 

Может кто-то помочь мне решить/переопределить существующее правило. я не хочу касаться основных правил модуля.

Спасибо,

ответ

1

Проверьте, из какого модуля это правило исходит от и вы можете переопределить как:

<record id="module.rule_id" model="ir.model.access"> 
    <field name="perm_read" eval="True"/> 
    <field name="perm_write" eval="False"/> 
    <field name="perm_create" eval="False"/> 
    <field name="perm_unlink" eval="False"/> 
</record> 

Например, модуль запаса и rule_id (вы можете найти это в режиме отладки в графическом интерфейсе или смотреть в модули ir.model.access.csv первый столбец) является move_read_all:

<record id="stock.move_read_all" model="ir.model.access"> 
    <field name="perm_read" eval="True"/> 
    <field name="perm_write" eval="False"/> 
    <field name="perm_create" eval="False"/> 
    <field name="perm_unlink" eval="False"/> 
</record> 

Если я понимаю ваше желание правильно, то вы должны переопределить его следующим образом:

<record id="stock.access_stock_picking_user" model="ir.model.access"> 
    <field name="perm_read" eval="True"/> 
    <field name="perm_write" eval="False"/> 
    <field name="perm_create" eval="False"/> 
    <field name="perm_unlink" eval="False"/> 
</record> 

Вам нужно будет установить зависимость для запаса в файл манифеста вашего настраиваемого модуля.

+0

Привет CZoellner, я не нашел правило move_read_all на складе. кроме того, нет значения столбца как move_read_all в файле ir.model.access.csv. Не могли бы вы посоветовать мне, как смотреть, используя режим отладки. – user280960

+0

Это был просто простой пример. Я попытался найти ваше явное правило доступа. Сначала с ir.model.access.csv в запасе модуля (запас/безопасность/ir.model.access.csv). Поиск model_stock_picking нашел 2 записи и 'access_stock_picking_user, share.picking user, model_stock_picking, stock.group_stock_user, 1,1,1,1' - тот, который вы хотите. Первый столбец содержит идентификатор xml (или внешний идентификатор) и является 'access_stock_picking_user'. – CZoellner

+0

Найти его с помощью GUI немного сложно. Вам нужно активировать debug. Перейдите в раздел «Настройки/Технические параметры/Безопасность/Контроль доступа» и найдите модель stock.picking. Вы найдете несколько записей. Теперь отметьте тот, который вы хотите для xml-id, а затем переключитесь на форму (справа вверху). Теперь откройте меню отладки и найдите «журнал просмотра» или что-то с метаданными. На этом всплывающем окне вы получите идентификатор xml. – CZoellner

1

сделать одну вещь, создать один файл CSV с именем «ir.model.access.csv» и в том, что создать одну запись.

Этот файл csv должен содержать следующие столбцы.

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink  
access_id,access_name,model_stock_picking,group_name_external_id,1,0,0,0 

И добавьте к этому .py файл OpenERP, поэтому он будет установить это права доступа для конкретной модели к определенной группе. Предположим, вы хотите установить эти разрешения для всех, а затем просто оставьте поле «group_id», после чего оно установит это разрешение по умолчанию для всех пользователей.

+0

Спасибо Emipro Technologies Pvt. Ltd. – user280960

+0

Hi Emipro, отлично подходит для правила доступа в собственном модуле, но если вам нужно переопределить правила доступа к другим группам, это не сработает. Например, выбор хранилища (создание правила на Stock.picking) зависит от двух факторов: 1) stock.picking правило доступа 2), если пользователь находится в продаже/видеть собственную группу потенциальных клиентов. Поэтому для отключения необходимо переопределить оба. Сначала это нормально, так как это подгруппа склада/пользователя. НО для второго он создает правило доступа, но не отменяет его. Я использовал следующую строку в csv: access_stock_picking_salesman, продавец Stock_picking, stock.model_stock_picking, base.group_sale_salesman, 1,1,0,0. – user280960

+0

Как только вы установите это правило, и после этого из любого другого модуля вы снова установите правило для этой группы, оно переопределит эти разрешения. Не имеет значения, устанавливаете ли вы правило по внешнему id или csv аналогично, оно будет перезаписано, если оно будет там в любом другом модуле, который будет установлен позже этого модуля. И я не получаю никакой разницы между моим и @CZoellner ответа.Правило, которое будет выполнено последним при любом процессе установки/обновления модуля, будет применяться для прав доступа. –

Смежные вопросы