2016-06-08 74 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> 

現在,該集團倉庫/用戶有權訪問規則的object(stock.picking)爲1,1,1,1。我需要限制/重寫此規則(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(你可以在GUI與調試模式發現這或可考慮模塊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。此外,在ir.model.access.csv中沒有列值作爲move_read_all。你能指導我如何看待使用調試模式。 – user280960

+0

這只是一個簡單的例子。我試圖找到你明確的訪問規則。首先在模塊庫存(stock/security/ir.model.access.csv)中使用ir.model.access.csv。搜索model_stock_picking發現2項和'access_stock_picking_user,stock.picking用戶,model_stock_picking,stock.group_stock_user,1,1,1,1'是你想要的。第一列包含xml id(或外部id),並且是'access_stock_picking_user'。 – CZoellner

+0

通過GUI查找它有點棘手。您需要激活調試。轉至設置/技術/安全/訪問控制列表並搜索模型stock.picking。你會發現一些條目。現在標記一個你想要的XML ID,然後切換到窗體視圖(右上)。現在打開調試菜單並查找「查看日誌」或元數據。在該彈出窗口中,您將獲得xml id。 – CZoellner

1

做一兩件事,創建一個名爲「ir.model.access.csv」一個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 

這增加了的OpenERP .py文件,所以它會設置爲特定型號的特殊組的訪問權限。假設你想爲所有用戶設置這個權限,然後留下空白「group_id」字段,那麼它將爲所有用戶設置默認權限。

+0

謝謝Emipro Technologies Pvt。 Ltd. – user280960

+0

嗨Emipro,適用於自己的模塊訪問規則,但如果您需要覆蓋其他組訪問規則,這是行不通的。例如,倉庫選擇器(stock.picking上的創建規則)取決於兩個因素:1)stock.picking訪問規則2)如果用戶處於銷售/查看自己的線索組。所以禁用需要重寫兩個。首先是罰款,因爲它是倉庫/用戶的子組。但是對於秒,它創建訪問規則但不覆蓋它。我在csv中使用了以下行:access_stock_picking_salesman,stock_picking salesman,stock.model_stock_picking,base.group_sale_salesman,1,1,0,0。 – user280960

+0

一旦你設置了這個規則,並在此之後從任何其他模塊再次設置該組的規則,它將覆蓋此權限。無論您是通過外部ID還是通過csv設置規則,它都會被覆蓋,如果它將在任何其他將安裝在此模塊之後的模塊中。而且我和@CZoellner的答案沒有任何區別。將由任何模塊安裝/升級過程最後執行的規則將應用於訪問權限。 –