odoo之权限

笔记这种东西,想起来就记上一点吧!随缘

1、odoo之权限控制

放置权限的文件夹(odoo自动生成):


其中csv文件就像是一张表格,那么第一行就像是表单的列名,解释:

id,:模型的id        保存形式:access_  +  模型名称(把点换成'_'

name,:模型名称        保存形式:模型名称

model_id:id,:对应的对象模型        保存形式:model_  + 模型名称(把点换成'_')     

group_id:id,:自定义分组(下面会说)        保存形式:组的id    

perm_read,perm_write,perm_create,perm_unlink:这些分别表示下面的四个权限:



下面会说内容:如何建立分组

上面说了第一个文件,接下来就是第二个文件。话说第二个文件应该 也是自动生成的 但是我这里确实没有,但这样也不妨碍我们的成功!

上代码:怎么放不了代码,崩溃


首先解释第一个record:

    放置当前模块 id里写模块名称  name的话就写中文名称吧,省的还要去百度,还要写翻译(这里的的中文名称将会显示在设置中的群组里)

第二个record:

    这个就是设置群组的record,id随便写,name一样写中文,category_id继承第一个record的id即可  表示作用于这个模块

第三个record:

    比于之前,多一个implied_ids 这个与设置群组中的继承标签同步,也可以不写,手动设置是一样的。

小知识:noupdate属性表示是否更具模块应用的更新而更新,0表示no  1表示yes  默认不写则是0

end:写完这些 记得更新模块应用,进入 设置》群组》找到你添加的群组进入设置即可。

### Odoo 用户权限管理概述 Odoo 提供了一套全面而灵活的权限管理系统,用于满足不同企业的需求。以下是关于用户权限设置的核心概念和技术实现。 #### 权限管理基础 Odoo权限管理基于 **用户组 (Group)** 和多层级的设计理念。一个用户可以属于多个用户组,而每个用户组则定义了一系列可访问的功能和资源[^4]。通过这种方式,管理员能够高效地分配权限并简化复杂的权限配置过程。 #### 多层次权限体系 Odoo权限划分为以下几个主要级别: 1. **菜单级权限** 控制特定菜单项是否对某类用户可见。这种级别的权限仅影响 UI 显示效果,并不能完全阻止未经授权的操作。如果用户尝试绕过前端逻辑并通过 URL 访问受保护区域,则仍需依赖更深层次的安全措施来拦截请求[^5]。 2. **对象级权限** 这是最核心也是最严格的权限控制层面之一。它决定了哪些数据库模型及其关联的数据记录可供指定群体查看、新增、编辑或者移除。具体而言,在 `ir.model.access` 表中存储着每种动作(如读取、写入等)对应于各 Model 的许可状态[^3]。 3. **视图级权限** 针对某些敏感信息(例如产品成本价),可能希望将其屏蔽给普通员工但保留给管理层人员查阅的机会;此时便需要用到此类型的设定——即限定谁能够在界面上看见这些特殊组件/控件等内容。 4. **字段级权限** 更加细致化的一种形式,允许开发者针对单独属性制定规则说明谁能触及它们以及怎样操作才是被允许的行为模式等等细节方面的要求。 #### 动态更新用户权限实例 当业务需求发生变化时,可以通过编程手段快速调整现有用户的授权情况。下面给出一段 Python 示例代码展示如何实现这一目标: ```python from odoo import models, fields, api class ResUsers(models.Model): _inherit = 'res.users' @api.multi def add_to_group(self, group_xml_id): """Add current user(s) to specified group.""" group = self.env.ref(group_xml_id) if not isinstance(group, models.BaseModel): # Ensure we got a valid Group object. raise ValueError(f"Invalid XML ID provided: {group_xml_id}") for rec in self: rec.write({'groups_id': [(4, group.id)]}) @api.multi def remove_from_group(self, group_xml_id): """Remove current user(s) from specified group.""" group = self.env.ref(group_xml_id) if not isinstance(group, models.BaseModel): raise ValueError(f"Invalid XML ID provided: {group_xml_id}") for rec in self: rec.write({'groups_id': [(3, group.id)]}) ``` 上述函数分别实现了向选定用户添加或移除所属群组功能的方法调用接口[^1]。 #### 创建自定义权限组步骤概览 为了更好地适应实际应用场景中的复杂要求,有时还需要构建全新的角色类别以便进一步细化分工协作关系。以下是建立新分组的大致流程描述: 1. 定义一个新的安全文件夹路径下的 CSV 文件用来声明新的 Access Rights 设置; 2. 编辑相应的 .py 源码片段引入刚才提到的那个 csv 中所列举出来的各项权利项目; 3. 更新模块结构使之生效即可完成整个定制化进程。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值