
Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn
由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解
本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!
开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号
如果您登录系统碰到问题,请在微信公众号留言:
工作流中如何根据用户组的权限判断该用户是否有权进行某一步的操作?
-
RT,是在工作流那儿实现还是在类里面实现?
自带的模块里面有没有什么简单的例子可以借鉴一下?
谢谢各位大神 -
定义
WorkflowTransition
上的group_id
可以限制只有具有这些权限组的用户才能执行这个Transition。 -
@braidtim
直接加上group即可,这是自带的休假模块 -
@joshua 在 工作流中如何根据用户组的权限判断该用户是否有权进行某一步的操作? 中说:
WorkflowTransition
如何知道我在UI界面自己新建的group的group_id?
或者用代码创建group和user并给予对应关系应该如何操作? -
@dodo
谢谢,我自己在UI界面设置那儿新建了一个group,并新建了一个user归于这个group想测试一下,但是不知道group_id后面ref应该填什么。
比如我新建的group叫GroupA,直接ref="GroupA"会报错,那么应该怎么写? -
ref的值是External ID也叫xml-id,External ID是通过xml来创建这个记录时赋予的,例如:
<record id="sale.group_sale_layout" model="res.groups">
。External ID就是sale.group_sale_layout
如果记录是在界面创建的,是没有个External ID的。解决办法:在界面导出这个界面创建的group,系统会自动分配一个External ID,但是为了以后维护我建议是你用xml来创建group比较好。 -
@joshua
先谢谢大神!
group可能包含对多个应用的权限控制吧?那么xml是要写在自己的应用里面还是写在什么系统路径?写在自己应用或者是系统的话,删除的时候会不会有什么残留或者出错?
我看UI界面创建group里面参数还挺多的,有什么系统自带的例子么(不好意思,我又厚脸皮的来要例子了)? -
@joshua
我按照您说的导出,看到ID是__export__.res_groups_25,果然是导出才生成的,不易于管理。但是我去wkf_transition表里面看记录的就是25这个值啊,找了找名字带group的其他表,也没看到哪儿有__export__.res_groups_25对应25这个关系表啊?
虽然实现了权限控制,但是好像啥提示都没有?比如弹窗您无权限之类的,就是单纯的点了没用吗?还是说提示要在python里面写?
初始admin账户是不是默认所有权限的?我新建的group没加admin,似乎都能无障碍操作。 -
也没看到哪儿有__export__.res_groups_25对应25这个关系表啊?
关系表
ir.model.data
。虽然实现了权限控制,但是好像啥提示都没有?比如弹窗您无权限之类的,就是单纯的点了没用吗?还是说提示要在python里面写?
对的,目前在工作流里面写的group是没有提示的,如果需要提示,你可以在python里面写。
初始admin账户是不是默认所有权限的?我新建的group没加admin,似乎都能无障碍操作。
对的,他是有访问操作所有对象/记录的权限。
-
@joshua
我看写在python里面的都是输出到服务器那个exe上面的
有什么接口可以在python那儿给浏览器弹窗吗?
我看有onchange函数可以return warning的,试了一下似乎不行?是因为按钮是multi吗?
顺便问问python函数前面@api.onchange('XX')或者@api.multi
这些前缀,那么在哪儿能看到更详细一点各种前缀的介绍?
谢谢 -
有什么接口可以在python那儿给浏览器弹窗吗?
我看有onchange函数可以return warning的,试了一下似乎不行?是因为按钮是multi吗?return warning是onchange用的,平时的方法可以用通过
raise
来实现,例如:
raise UserError(_('You can not delete a sent quotation or a sales order! Try to cancel it before.'))
顺便问问python函数前面@api.onchange('XX')或者@api.multi
这些前缀,那么在哪儿能看到更详细一点各种前缀的介绍? -
@joshua
试了一下似乎出错了
NameError: global name 'UserError' is not defined
要加什么头文件吗?我这儿odoo10.0 -
@braidtim
在文件开头要加入引入这个python模块from odoo.exceptions import UserError
-
@joshua
谢谢!最后问问去哪儿能看到自己建的类里面除了自己定义的还有那些默认的参数可以调用?我看是从models.Model继承的,但是去看model.py文件也没找到什么。比如我想判断当前用户的组别,如果没权限就raise个error,有了就直接通过这样。组别这个参数该怎么获取? -
@BraidTim
建议一个帖子一个主题,你的问题在文档里都有介绍,完整的入门教程可以参考这个:http://www.odoo.com/documentation/10.0/howtos/backend.html,
更多的框架的信息可以看其他章节 http://www.odoo.com/documentation/10.0/index.html