首页 > 其他分享 >odoo 开发入门教程系列-安全-简介

odoo 开发入门教程系列-安全-简介

时间:2023-03-25 09:02:32浏览次数:55  
标签:xml ir res views 简介 入门教程 odoo model data

安全-简介

前一章中我们已经创建了第一个打算用于存储业务数据的表。在odoo这样的一个商业应用中,第一个考虑的问题就是谁(Odoo 用户(或者组用户))可以访问数据。odoo为指定用户组用户提供了一个安全的数据访问机制。

更多关于安全主题的详细信息可以查看 Advanced B: ACL and Record Rules。本章目标是覆盖我们新模块的最小安全需求。

Data Files (CSV)

Odoo是一个高度数据驱动的系统。虽然通过Python代码定制行为,但是模块的部分值在加载时设置的数据中。 加载数据的方式之一是通过一个CSV文件,比如在安装base模块时加载的country states列表

"id","country_id:id","name","code"
state_us_1,us,"Alabama","AL"
state_us_2,us,"Alaska","AK"
state_us_3,us,"Arizona","AZ"
state_us_4,us,"Arkansas","AR"
...
  • id外部标识。可用于引用记录(不需要知道在数据库中的唯一标识)。
  • country_id:id 通过使用外部标识指向国家.
  • name 州的名称
  • code 州的代码

res.country.state model中定义了这三个字段

按约定,导入数据的文件存放在模块的 data 目录中。当数据和安全相关时,存放在 security 目录中,当数据和视图和action相关时,存放在 views 目录中. 此外,所有这些文件必须在 __manifest__.py中的data 列表中定义

查看示例文件

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.


{
    'name': 'Base',
    'version': '1.3',
    'category': 'Hidden',
    'description': """
The kernel of Odoo, needed for all installation.
===================================================
""",
    'depends': [],
    'data': [
        'data/res.lang.csv',
        'data/res_lang_data.xml',
        'data/res_partner_data.xml',
        'data/res_company_data.xml',
        'data/res_users_data.xml',
        'data/report_paperformat_data.xml',
        'data/res_currency_data.xml',
        'data/res_country_data.xml',
        'data/ir_demo_data.xml',
        'security/base_groups.xml',
        'security/base_security.xml',
        'views/base_menus.xml',
        'views/decimal_precision_views.xml',
        'views/res_config_views.xml',
        'data/res.country.state.csv',
        'views/ir_actions_views.xml',
        'views/ir_config_parameter_views.xml',
        'views/ir_cron_views.xml',
        'views/ir_filters_views.xml',
        'views/ir_mail_server_views.xml',
        'views/ir_model_views.xml',
        'views/ir_attachment_views.xml',
        'views/ir_rule_views.xml',
        'views/ir_sequence_views.xml',
        'views/ir_translation_views.xml',
        'views/ir_ui_menu_views.xml',
        'views/ir_ui_view_views.xml',
        'views/ir_default_views.xml',
        'data/ir_cron_data.xml',
        'report/ir_model_report.xml',
        'report/ir_model_templates.xml',
        'views/ir_logging_views.xml',
        'views/ir_qweb_widget_templates.xml',
        'views/ir_module_views.xml',
        'data/ir_module_category_data.xml',
        'data/ir_module_module.xml',
        'report/ir_module_reports.xml',
        'report/ir_module_report_templates.xml',
        'wizard/base_module_update_views.xml',
        'wizard/base_language_install_views.xml',
        'wizard/base_import_language_views.xml',
        'wizard/base_module_upgrade_views.xml',
        'wizard/base_module_uninstall_views.xml',
        'wizard/base_export_language_views.xml',
        'wizard/base_update_translations_views.xml',
        'wizard/base_partner_merge_views.xml',
        'wizard/base_document_layout_views.xml',
        'data/ir_actions_data.xml',
        'data/ir_demo_failure_data.xml',
        'views/res_company_views.xml',
        'views/res_lang_views.xml',
        'views/res_partner_views.xml',
        'views/res_bank_views.xml',
        'views/res_country_views.xml',
        'views/res_currency_views.xml',
        'views/res_users_views.xml',
        'views/ir_property_views.xml',
        'views/res_config_settings_views.xml',
        'views/report_paperformat_views.xml',
        'views/onboarding_views.xml',
        'security/ir.model.access.csv',
    ],
    'demo': [
        'data/res_company_demo.xml',
        'data/res_users_demo.xml',
        'data/res_partner_bank_demo.xml',
        'data/res_currency_rate_demo.xml',
        'data/res_bank_demo.xml',
        'data/res_partner_demo.xml',
        'data/res_partner_image_demo.xml',
    ],
    'test': [],
    'installable': True,
    'auto_install': True,
    'post_init_hook': 'post_init',
}

同时需要注意的是,当前数据文件仅在模块被安装或者更新时才被加载。

注意:

按数据文件在__manifest__.py 中的顺序加载文件数据。这意味着数据A 引用B, 则必须确保B放在A之前。

在country states的案例中, 你会发现country列表优先于country states列表被加载。这是因为country states 引用了country.

为什么这对于安全来说很重要,因为模块的所有安全配置,都是通过数据文件加载的。

访问权限(Access Rights)

参考: 该主题相关文档可以查看 Access Rights.

本节目标是解决类似以下告警:

WARNING rd-demo odoo.modules.loading: The model estate.property has no access rules...

当模型中没有定义任何访问权限时,odoo会认为没有任何用户可以访问数据,并在日志中打印:

2022-12-14 09:01:38,994 32508 WARNING odoo odoo.modules.loading: The model estate.property has no access rules, consider adding one. E.g. access_estate_property,access_estate_property,model_estate_property,base.group_user,1,0,0,0 

访问权限被定义为ir.model.access 模型记录。每个访问权限关联一个model,一个group(针对全局访问,没有组) 和一系列权限:create, read, writeunlink(等同于delete)。这些访问权限通常定义在一个名为ir.model.access.csv的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 代指需要应用访问权限的model。标准格式为 model_<model_name>,其中, <model_name>为模块中_name 替换._后的_name 的值
  • group_id/id 代指需应用访问权限的组。
  • perm_read,perm_write,perm_create,perm_unlink: 分别代表create, read, writeunlink权限,1表示有访问权限,0-表示无权限

练习

添加访问权限

在合适的目录中创建 ir.model.access.csv 文件(本例为 odoo14/custom/estate/security/ir.model.access.csv ),并在 __manifest__.py 文件中进行定义。

base.group_user授予read, write, createunlink权限

id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_estate_model,access_estate_model,model_estate_property,base.group_user,1,1,1,1

修改__manifest__.py文件(本例为odoo14/custom/estate/__manifest__.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
{
    'name': 'estate',
    'depends': ['base'],
    'data':['security/ir.model.access.csv']
}

重启odoo服务,查看日志是否还存在告警。

标签:xml,ir,res,views,简介,入门教程,odoo,model,data
From: https://www.cnblogs.com/shouke/p/17253311.html

相关文章

  • odoo 开发入门教程系列-模型和基本字段
    模型和基本字段在上一章的末尾,我们创建一个odoo模块。然而,此时它仍然是一个空壳,不允许我们存储任何数据。在我们的房地产模块中,我们希望将与房地产相关的信息(名称(name)、......
  • odoo 开发入门教程系列-一个新应用
    一个新应用房地产广告模块假设需要开发一个房地产模块,该模块覆盖未包含在标准模块集中特定业务领域。以下为包含一些广告的主列表视图form视图顶层区域概括了房产的重......
  • 网络和Internet简介
    1、常见的网络拓扑结构2、互联网的组成局域网(LAN):一所学校,一家公司由无数个局域网组成互联网3、局域网常用的设备和特点HUB(集线器)、交换机、路由器1、距离短2、延迟小3、传输......
  • 1.爬虫的简介
    前戏:   1.你是否在夜深人静的时候,想看一些会让你更睡不着的图片却苦于没有资源...   2.你是否在节假日出行高峰的时候,想快速抢购火车票成功...   3.你是否在网......
  • WebService入门教程_HTTP协议学习
    实现HTTP简介WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。HTTP是hypertexttransferprotocol(超文本传输协议)的简写,它是TCP/......
  • 个人简介和项目介绍
    你好呀,亲爱的陌生人,本文分为三部分,第一部分为个人简介,简单的介绍个人的风雨编程路第二部分为项目简介,介绍简历中的项目第三部分为其他做过的项目介绍,可以略过一、个......
  • Webservice入门教程_用Eclipse的TCP_IP工具监听请求实现端口转接
    实现在上面实现JDK开发webservice的基础上。配置TCP_IP工具Eclipse-Windows-preferences-TCP/IPMonitor-AddLocalmonitoringport是转接前的端口Hostname是address中......
  • Webservice入门教程_用JDK开发Webservice
    实现搭建服务端打开Eclipse新建Javaproject,在src下新建包com.badao.ws包下新建接口HellloWS.javapackagecom.badao.ws;importjavax.jws.WebMethod;importjavax.jws.......
  • 【建议收藏】7000+字的TIDB保姆级简介,你见过吗
    TIDB简介什么是TIDBTiDB是一个分布式NewSQL数据库。它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性,是一个不仅适合......
  • 20Cr钢板简介、20Cr化学成分及力学性能、20Cr钢板简介期货订轧
    一、20Cr钢板简介:20Cr是一种低淬透性渗碳钢。大多用于制造心部强度要求较高,表面承受磨损、截面在30mm以下的或形状复杂而负荷不大的渗碳零件。在现实生活中的应用十分广泛......