Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    工作流中如何根据用户组的权限判断该用户是否有权进行某一步的操作?

    Odoo 新手求助
    3
    15
    8588
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • B
      BraidTim 最后由 编辑

      RT,是在工作流那儿实现还是在类里面实现?
      自带的模块里面有没有什么简单的例子可以借鉴一下?
      谢谢各位大神

      D 1 条回复 最后回复 回复 引用 0
      • Joshua
        Joshua 管理员 最后由 编辑

        定义WorkflowTransition上的group_id可以限制只有具有这些权限组的用户才能执行这个Transition。

        【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

        B 1 条回复 最后回复 回复 引用 0
        • D
          dodo @BraidTim 最后由 编辑

          @braidtim 0_1501656664004_74b9f617-c2c5-4dc4-8d2d-af2edce4489b-image.png
          直接加上group即可,这是自带的休假模块

          B 1 条回复 最后回复 回复 引用 0
          • B
            BraidTim @Joshua 最后由 编辑

            @joshua 在 工作流中如何根据用户组的权限判断该用户是否有权进行某一步的操作? 中说:

            WorkflowTransition
            如何知道我在UI界面自己新建的group的group_id?
            或者用代码创建group和user并给予对应关系应该如何操作?

            1 条回复 最后回复 回复 引用 0
            • B
              BraidTim @dodo 最后由 编辑

              @dodo
              谢谢,我自己在UI界面设置那儿新建了一个group,并新建了一个user归于这个group想测试一下,但是不知道group_id后面ref应该填什么。
              比如我新建的group叫GroupA,直接ref="GroupA"会报错,那么应该怎么写?

              1 条回复 最后回复 回复 引用 0
              • Joshua
                Joshua 管理员 最后由 Joshua 编辑

                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 AT openerp.cn),欢迎关注公众号:openerp_cn

                B 2 条回复 最后回复 回复 引用 0
                • B
                  BraidTim @Joshua 最后由 编辑

                  @joshua
                  先谢谢大神!
                  group可能包含对多个应用的权限控制吧?那么xml是要写在自己的应用里面还是写在什么系统路径?写在自己应用或者是系统的话,删除的时候会不会有什么残留或者出错?
                  我看UI界面创建group里面参数还挺多的,有什么系统自带的例子么(不好意思,我又厚脸皮的来要例子了)?

                  1 条回复 最后回复 回复 引用 0
                  • B
                    BraidTim @Joshua 最后由 BraidTim 编辑

                    @joshua
                    我按照您说的导出,看到ID是__export__.res_groups_25,果然是导出才生成的,不易于管理。但是我去wkf_transition表里面看记录的就是25这个值啊,找了找名字带group的其他表,也没看到哪儿有__export__.res_groups_25对应25这个关系表啊?
                    虽然实现了权限控制,但是好像啥提示都没有?比如弹窗您无权限之类的,就是单纯的点了没用吗?还是说提示要在python里面写?
                    初始admin账户是不是默认所有权限的?我新建的group没加admin,似乎都能无障碍操作。

                    1 条回复 最后回复 回复 引用 0
                    • Joshua
                      Joshua 管理员 最后由 Joshua 编辑

                      也没看到哪儿有__export__.res_groups_25对应25这个关系表啊?

                      关系表ir.model.data。

                      虽然实现了权限控制,但是好像啥提示都没有?比如弹窗您无权限之类的,就是单纯的点了没用吗?还是说提示要在python里面写?

                      对的,目前在工作流里面写的group是没有提示的,如果需要提示,你可以在python里面写。

                      初始admin账户是不是默认所有权限的?我新建的group没加admin,似乎都能无障碍操作。

                      对的,他是有访问操作所有对象/记录的权限。

                      【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                      B 1 条回复 最后回复 回复 引用 0
                      • B
                        BraidTim @Joshua 最后由 编辑

                        @joshua
                        我看写在python里面的都是输出到服务器那个exe上面的
                        有什么接口可以在python那儿给浏览器弹窗吗?
                        我看有onchange函数可以return warning的,试了一下似乎不行?是因为按钮是multi吗?
                        顺便问问python函数前面@api.onchange('XX')或者@api.multi
                        这些前缀,那么在哪儿能看到更详细一点各种前缀的介绍?
                        谢谢

                        1 条回复 最后回复 回复 引用 0
                        • Joshua
                          Joshua 管理员 最后由 编辑

                          有什么接口可以在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
                          这些前缀,那么在哪儿能看到更详细一点各种前缀的介绍?

                          参考这个帖子:http://odoocn.org/topic/4602/odoo-装饰器的用法/3

                          【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                          B 1 条回复 最后回复 回复 引用 0
                          • B
                            BraidTim @Joshua 最后由 编辑

                            @joshua
                            试了一下似乎出错了
                            NameError: global name 'UserError' is not defined
                            要加什么头文件吗?我这儿odoo10.0

                            Joshua 1 条回复 最后回复 回复 引用 0
                            • Joshua
                              Joshua 管理员 @BraidTim 最后由 编辑

                              @braidtim
                              在文件开头要加入引入这个python模块from odoo.exceptions import UserError

                              【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                              B 1 条回复 最后回复 回复 引用 0
                              • B
                                BraidTim @Joshua 最后由 编辑

                                @joshua
                                谢谢!最后问问去哪儿能看到自己建的类里面除了自己定义的还有那些默认的参数可以调用?我看是从models.Model继承的,但是去看model.py文件也没找到什么。比如我想判断当前用户的组别,如果没权限就raise个error,有了就直接通过这样。组别这个参数该怎么获取?

                                1 条回复 最后回复 回复 引用 0
                                • Joshua
                                  Joshua 管理员 最后由 Joshua 编辑

                                  @BraidTim
                                  建议一个帖子一个主题,你的问题在文档里都有介绍,完整的入门教程可以参考这个:http://www.odoo.com/documentation/10.0/howtos/backend.html,
                                  更多的框架的信息可以看其他章节 http://www.odoo.com/documentation/10.0/index.html

                                  【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                                  1 条回复 最后回复 回复 引用 0
                                  • First post
                                    Last post