摘要:在中,使用用戶(hù)組來(lái)管理權(quán)限,一個(gè)特殊的用戶(hù)組是員工員工組,所有的用戶(hù)都屬于這個(gè)組,這個(gè)組里包含一些基本的權(quán)限。字段級(jí)別設(shè)置表中的字段的訪問(wèn)權(quán)限。
在Odoo中,使用用戶(hù)組(res.groups)來(lái)管理權(quán)限,一個(gè)特殊的用戶(hù)組是 員工/員工(base.group_user) 組,所有的用戶(hù)都屬于這個(gè)組,這個(gè)組里包含一些基本的權(quán)限。
四種權(quán)限級(jí)別(粒度越來(lái)越細(xì)):
1.菜單/對(duì)象級(jí)別
設(shè)置哪些人可以訪問(wèn)哪些菜單/對(duì)象,對(duì)象的訪問(wèn)權(quán)限包括創(chuàng)建、讀、寫(xiě)、刪除。
2.記錄級(jí)別
設(shè)置哪些人可以訪問(wèn)哪些記錄,也就是設(shè)置表的查詢(xún)條件。
3.字段級(jí)別
設(shè)置表中的字段的訪問(wèn)權(quán)限。
4.工作流級(jí)別(很少用到)
在工作流的每一步遷移中,設(shè)置哪些角色允許觸發(fā)本遷移
下面示例使用的是account模塊中的代碼,所以大家有什么問(wèn)題可以去odoo源碼查詢(xún)。
關(guān)于權(quán)限的文件一般在security文件夾中,
xxx_security.xml文件定義用戶(hù)組和用戶(hù)組對(duì)菜單的訪問(wèn)權(quán)限
ir.model.access.csv定義用戶(hù)組對(duì)對(duì)象的權(quán)限矩陣
首先創(chuàng)建一個(gè)組分類(lèi)(表示很多組屬于一個(gè)分類(lèi)):
module_category_accounting_and_finance 57
再創(chuàng)建一個(gè)用戶(hù)組:
Billing
修改這個(gè)組的一些內(nèi)容,如:給這組加上一個(gè)用戶(hù):
下面說(shuō)一下eval語(yǔ)法:
(0, 0, {values}) 根據(jù)values的值新建一條記錄 (1, ID, {values}) 更新id=ID的記錄,(寫(xiě)入values的值) (2, ID) 刪除id=ID這條記錄,(調(diào)用unlink方法,刪除數(shù)據(jù)及整個(gè)主從數(shù)據(jù)鏈接關(guān)系) (3, ID) 切斷主從數(shù)據(jù)的鏈接關(guān)系但是不刪除這個(gè)記錄 (4, ID) 為id=ID的數(shù)據(jù)添加主從鏈接關(guān)系 (5) 刪除所有的從數(shù)據(jù)的鏈接關(guān)系,也就是向所有的從數(shù)據(jù)調(diào)用(3, ID) (6, 0, [IDs]}) 用IDs中的記錄替換原來(lái)的記錄(相當(dāng)于先執(zhí)行(5)在循環(huán)執(zhí)行(4, ID))用戶(hù)組對(duì)model的權(quán)限控制(也就是對(duì)象的訪問(wèn)權(quán)限)
模塊下 security 目錄下的文件:ir.model.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_product_product_account_user,product.product.account.user,product.model_product_product,group_account_user,1,0,0,0 access_product_product_account_manager,product.product.account.manager,product.model_product_product,group_account_manager,1,1,1,1 access_product_template_account_manager,product.template.account.manager,product.model_product_template,group_account_manager,1,1,1,1 access_product_price_history_account_manager,prices.history.account.manager,product.model_product_price_history,group_account_manager,1,1,1,1 access_account_payment_term,account.payment.term,model_account_payment_term,account.group_account_`user,1,0,0,0
id:可以隨便取,但是在一個(gè)模塊中是唯一的,一般取名為 access_模型名_特定用戶(hù)組名(用下劃線連起來(lái))
name: 可以隨便取,一般命名沿用模型名用“.”連接加 用戶(hù)組名
model:id: 要做權(quán)限控制的model,格式寫(xiě)法是 模塊名.model_模塊名(中間的‘.’換成‘_’),如果model在此模塊中,可以省略模塊名,如product.model_product_product
group:id:組的id,不是本模塊的組,要在前面加上模塊名,如:account.group_account_user
perm_read,perm_write,perm_create,perm_unlink:這些就是具體的權(quán)限:讀寫(xiě)增刪,1 有權(quán)限,0 無(wú)權(quán)限
第二種寫(xiě)法(簡(jiǎn)潔寫(xiě)法)Invoicing account,static/description/icon.png 40
上面的2個(gè)xml表示menu_finance這個(gè)菜單只能被group_account_user,group_account_manager,group_account_invoice 三個(gè)用戶(hù)組訪問(wèn)
如果有上級(jí)菜單,加parent屬性,如果上級(jí)菜單不在本模塊中,需要加模塊名如:account.menu_finance:
記錄的權(quán)限放在"ir.rule"model中,所有我們添加或修改ir_rule表中的記錄,就可以控制記錄的權(quán)限
Account Entry ["|",("company_id","=",False),("company_id","child_of",[user.company_id.id])]
domain_force(也就是domain表達(dá)式的寫(xiě)法)寫(xiě)法請(qǐng)看我的另一篇博客domain的寫(xiě)法及運(yùn)用。
字段級(jí)別的權(quán)限控制給字段上添加用戶(hù)組,表示只有這些組的用戶(hù)在這個(gè)視圖中才能訪問(wèn)和操作這個(gè)字段,如:
account.invoice.line.tree account.invoice.line
上面xml表示在這個(gè)tree視圖(這里注意,這個(gè)權(quán)限只針對(duì)這個(gè)tree視圖)上,account_id,uom_id,discount這3個(gè)字段只有對(duì)應(yīng)的用戶(hù)組中的用戶(hù)才能看到。
如果你想在這個(gè)model的所有視圖中都有這個(gè)權(quán)限控制的話,要在這個(gè)字段定義的時(shí)候,就要指定groups,多個(gè)用戶(hù)組用","分隔,如:
gengo_private_key = fields.Text(string="Gengo Private Key", copy=False, groups="base.group_system,base.group_user")
權(quán)限控制到這里就結(jié)束了,如果有什么錯(cuò)誤的地方,歡迎大家指出。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41678.html
摘要:今天這個(gè)系列教程即將迎來(lái)它的最后一篇內(nèi)容了,我們將要來(lái)學(xué)習(xí)中權(quán)限相關(guān)的內(nèi)容。在的權(quán)限管理體系中,同樣也有用戶(hù)組這一概念的存在,和其他框架如可以說(shuō)大同小異。通常和權(quán)限相關(guān)的內(nèi)容,我們都會(huì)在模塊的目錄下進(jìn)行定義,記錄集規(guī)則的定義自然也不例外。 在今年的情人節(jié)(2018.02.14)那天,我寫(xiě)了一篇博客說(shuō)即將要開(kāi)一個(gè)坑,也就是大家在看的這個(gè)系列的教程。今天這個(gè)系列教程即將迎來(lái)它的最后一篇內(nèi)容...
摘要:而模塊化則是區(qū)別于大多數(shù)傳統(tǒng)的最強(qiáng)特性,基于這一特性,開(kāi)發(fā)人員可以輕松地繼承和擴(kuò)展任何現(xiàn)有的模塊,可以輕松地針對(duì)不同的需求進(jìn)行功能定制。相關(guān)文章基礎(chǔ)教程系列第一篇環(huán)境準(zhǔn)備 showImg(https://segmentfault.com/img/remote/1460000013290099?w=1280&h=856); 大家新年好!給大伙拜個(gè)早年,今天也是情人節(jié)呢,這么好的日子,卻一...
摘要:雖然這是個(gè)很簡(jiǎn)單的應(yīng)用,但是希望大家可以動(dòng)手一起操作,從最簡(jiǎn)單的開(kāi)始上手學(xué)習(xí)如何使用這個(gè)框架。則是在和之間,負(fù)責(zé)響應(yīng)用戶(hù)操作,從中獲取數(shù)據(jù)進(jìn)行處理并返回到中。 showImg(https://segmentfault.com/img/bV66tE?w=728&h=410); 在第一篇教程發(fā)布之后差不多一個(gè)月的今天,終于完成了第二篇內(nèi)容,這個(gè)發(fā)布周期拖得實(shí)在是有點(diǎn)太長(zhǎng)了,我都覺(jué)得不好意思...
摘要:安裝安裝基于穩(wěn)定性考慮安裝的是,而且默認(rèn)的官方源中不提供的安裝包,所以我們要先換一個(gè)提供的源。安裝完成之后,創(chuàng)建一個(gè)配置文件。 Centos7 安裝 Odoo11 1 安裝python3.6 Centos7 基于穩(wěn)定性考慮安裝的是python2.7,而且默認(rèn)的官方 yum 源中不提供 Python 3 的安裝包,所以我們要先換一個(gè)提供python3的yum源-- IUS 。 1、IU...
摘要:安裝安裝基于穩(wěn)定性考慮安裝的是,而且默認(rèn)的官方源中不提供的安裝包,所以我們要先換一個(gè)提供的源。安裝完成之后,創(chuàng)建一個(gè)配置文件。 Centos7 安裝 Odoo11 1 安裝python3.6 Centos7 基于穩(wěn)定性考慮安裝的是python2.7,而且默認(rèn)的官方 yum 源中不提供 Python 3 的安裝包,所以我們要先換一個(gè)提供python3的yum源-- IUS 。 1、IU...
閱讀 2588·2019-08-30 10:53
閱讀 3191·2019-08-29 16:20
閱讀 2947·2019-08-29 15:35
閱讀 1768·2019-08-29 12:24
閱讀 2876·2019-08-28 18:19
閱讀 1851·2019-08-23 18:07
閱讀 2331·2019-08-23 15:31
閱讀 1168·2019-08-23 14:05