Odoo安全性-简介
数据文件 (CSV)
Odoo是一个高度数据驱动的系统。尽管行为是使用 Python 代码自定义的,但 模块的值在加载时设置的数据中。加载数据的一种方法是通过 CSV 文件。一个例子是在安装模块时加载的国家/地区列表。
base
"id","country_id:id","name","code"
state_au_1,au,"Australian Capital Territory","ACT"
state_au_2,au,"New South Wales","NSW"
state_au_3,au,"Northern Territory","NT"
state_au_4,au,"Queensland","QLD"
...
-
id
是外部标识符。它可用于引用记录 (不知道其数据库内标识符)。 -
country_id:id
使用其外部标识符指代国家/地区。 -
name
是国家的名称。 -
code
是国家的代码。
这三个字段在模型中定义。res.country.state
按照惯例,导入数据的文件位于模块的文件夹中。当数据 与安全性相关,它位于文件夹中。当数据与 视图和操作(我们稍后将介绍),它位于文件夹中。 此外,所有这些文件都必须在文件内的列表中声明。我们的示例文件是在基本模块的清单中定义的。data
security
views
data
__manifest__.py
另请注意,数据文件的内容仅在安装模块或 更新。
警告
数据文件按照它们在文件中的顺序按顺序加载。 这意味着,如果 data 引用 数据 ,则必须确保在加载之前加载 。__manifest__.pyABBA
对于国家/地区 这是因为各州指的是国家/地区。
为什么这一切对安全很重要?因为模型的所有安全配置都是通过加载的 数据文件,我们将在下一节中看到。
访问权限
参考:与此主题相关的文档可在访问权限中找到。
注意
目标:在本节末尾,不应再出现以下警告:
WARNING rd-demo odoo.modules.loading: The models ['estate.property'] have no access rules...
当模型上没有定义访问权限时,Odoo将确定没有用户可以访问数据。 它甚至在日志中通知:
WARNING rd-demo odoo.modules.loading: The models ['estate.property'] have no access rules in module estate, consider adding some, like:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
访问权限被定义为模型的记录。每 访问权限与模型、组(或全局的无组)相关联 access) 和一组权限:创建、读取、写入和取消链接2.这种访问 权限通常在名为 的 CSV 文件中定义。ir.model.access
ir.model.access.csv
下面是我们之前的一个例子:test_model
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_test_model,access_test_model,model_test_model,base.group_user,1,0,0,0
-
id
是外部标识符。 -
name
是 的名称。ir.model.access
-
model_id/id
指访问权限适用的模型。标准参考方式 to the model 是 ,其中 是模型的 替换为 .看起来很麻烦?确实是......model_<model_name>
<model_name>
_name
.
_
-
group_id/id
指访问权限适用的组。 -
perm_read,perm_write,perm_create,perm_unlink
:读取、写入、创建和取消链接权限
锻炼
添加访问权限。
在相应的文件夹中创建文件,并在文件中定义它。ir.model.access.csv__manifest__.py
向组授予读取、写入、创建和取消链接权限。base.group_user
提示:日志中的警告消息为您提供了大部分解决方案;-)
重新启动服务器,警告消息应该已经消失了!