跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 新手求助
  4. 工作流中如何根据用户组的权限判断该用户是否有权进行某一步的操作?

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

已定时 已固定 已锁定 已移动 Odoo 新手求助
15 帖子 3 发布者 9.5k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • B 离线
    B 离线
    BraidTim
    写于 最后由 编辑
    #1

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

    D 1 条回复 最后回复
    0
    • JoshuaJ 离线
      JoshuaJ 离线
      Joshua 管理员
      写于 最后由 编辑
      #2

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

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

      B 1 条回复 最后回复
      0
      • D 离线
        D 离线
        dodo
        在 回复了 BraidTim 最后由 编辑
        #3

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

        B 1 条回复 最后回复
        0
        • B 离线
          B 离线
          BraidTim
          在 回复了 Joshua 最后由 编辑
          #4

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

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

          1 条回复 最后回复
          0
          • B 离线
            B 离线
            BraidTim
            在 回复了 dodo 最后由 编辑
            #5

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

            1 条回复 最后回复
            0
            • JoshuaJ 离线
              JoshuaJ 离线
              Joshua 管理员
              写于 最后由 Joshua 编辑
              #6

              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 离线
                B 离线
                BraidTim
                在 回复了 Joshua 最后由 编辑
                #7

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

                1 条回复 最后回复
                0
                • B 离线
                  B 离线
                  BraidTim
                  在 回复了 Joshua 最后由 BraidTim 编辑
                  #8

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

                  1 条回复 最后回复
                  0
                  • JoshuaJ 离线
                    JoshuaJ 离线
                    Joshua 管理员
                    写于 最后由 Joshua 编辑
                    #9

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

                    关系表ir.model.data。

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

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

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

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

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

                    B 1 条回复 最后回复
                    0
                    • B 离线
                      B 离线
                      BraidTim
                      在 回复了 Joshua 最后由 编辑
                      #10

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

                      1 条回复 最后回复
                      0
                      • JoshuaJ 离线
                        JoshuaJ 离线
                        Joshua 管理员
                        写于 最后由 编辑
                        #11

                        有什么接口可以在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 离线
                          B 离线
                          BraidTim
                          在 回复了 Joshua 最后由 编辑
                          #12

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

                          JoshuaJ 1 条回复 最后回复
                          0
                          • JoshuaJ 离线
                            JoshuaJ 离线
                            Joshua 管理员
                            在 回复了 BraidTim 最后由 编辑
                            #13

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

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

                            B 1 条回复 最后回复
                            0
                            • B 离线
                              B 离线
                              BraidTim
                              在 回复了 Joshua 最后由 编辑
                              #14

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

                              1 条回复 最后回复
                              0
                              • JoshuaJ 离线
                                JoshuaJ 离线
                                Joshua 管理员
                                写于 最后由 Joshua 编辑
                                #15

                                @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

                                • 登录

                                • 没有帐号? 注册

                                • 登录或注册以进行搜索。
                                • 第一个帖子
                                  最后一个帖子
                                0
                                • 版块
                                • 标签
                                • 热门
                                • 用户
                                • 群组