跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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 帖子 6 发布者 9.6k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • digitalsatoriD 离线
    digitalsatoriD 离线
    digitalsatori 管理员
    写于 最后由 编辑
    #6

    @breterniu 根据对象状态来设置访问规则有两种方法。mrshelly很详尽的跟你解释了如何在对象的字段级别根据状态设置访问规则,另一种就是记录级的访问规则,就是你提到的方法。
    之所以你的方法不成功,是因为你只为该对象设置了读的权限规则,对增,删,改并没有设置权限规则,OpenERP对不设定规则的表示默认具有该权限。对于你的需求,你可以再增加一条记录规则应用于(create, write, delete): [('state','!=','approved')]

    【上海先安科技】(tony AT openerp.cn)

    1 条回复 最后回复
    0
    • B 离线
      B 离线
      breterniu
      写于 最后由 编辑
      #7

      感谢@digitalsatori,@mrshelly详细的说明.
      (1)按mrshelly进行字段级定义可以工作,然而有不合理之处,一是逻辑上是对象级权限,按字段设置太繁琐;二是应为通过配置实现,而不是代码。
      (2)按digitalsatori记录级的方法测试了一下仍不成功,[('state','!=','approved')],从逻辑上也有些问题,A-〉B,并不能推导出!A->!B,您说呢


      1 条回复 最后回复
      0
      • mrshellyM 离线
        mrshellyM 离线
        mrshelly
        写于 最后由 编辑
        #8

        理论上, 这个 states 可以在 view xml 里配置, 这样,就可以通过配置实现了.
        但是.... 这个 states 属性的OE处理, 从  5.0.x 开屎 就BUG不断... 至少6.0.3  还是存在有很多问题. 具体的可以搜索BBS里我关于 attrs 的贴子.

        如果这个BUG解决了. 你就可以从 view xml 中去配置玩这些东西了...(如果你的条件不复杂....)

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

          我测试了按照[('state','!=','approved')] 应该是可以的,不知道楼主是用什么账号登陆,如果是admin?还是你的状态名字写错了。你试试用非管理员的用户登陆。而且逻辑上也没问题,你要的是在approve下不能修改换句话那就是在draft下或者done的状态可以修改。因为不知道你实际是想怎么用,不过在定义权限的时候,也是按上面digitalsatori说的那样,如果你没给[b]改,增,删[/b]定义一个domain他就默认你可以在任何状态修改。你一开始定义read没效是因为那样定义的的意思只是state为apprved的时候才能在tree view上看到,对[b] 改,增,删[/b]完全没有约束。

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

          1 条回复 最后回复
          0
          • B 离线
            B 离线
            breterniu
            写于 最后由 编辑
            #10

            再次感谢!
              用记录规则方式似影响到对象动态权限,然而中间出现很多莫名其妙错误,如图所示,如字符集问题,一些字段仍可更新等等。
              (1)用记录规则定义与状态相关的对象权限仍不是合理的方案,基于工作流状态的ACL方式(通过配置文件)应是解决办法。目前基于字段级定义更可靠些。
              (2)OPENERP应偏实施而不是二次开发。

            [quote author=Joshua link=topic=2753.msg9274#msg9274 date=1328665839]
            我测试了按照[('state','!=','approved')] 应该是可以的,不知道楼主是用什么账号登陆,如果是admin?还是你的状态名字写错了。你试试用非管理员的用户登陆。而且逻辑上也没问题,你要的是在approve下不能修改换句话那就是在draft下或者done的状态可以修改,因为不知道你实际是想怎么用。不过在定义权限的时候,也是按上面digitalsatori说的那样,如果你没给[b]改,增,删[/b]定义一个domain他就默认你可以在任何状态修改。你一开始定义read没效是因为,那样定义的的意思只是state为apprved的时候才能在tree view上看到,对[b] 改,增,删[/b]完全没有约束。
            [/quote]

            1 条回复 最后回复
            0
            • wjfonhandW 离线
              wjfonhandW 离线
              wjfonhand
              写于 最后由 编辑
              #11

              “OPENERP应偏实施而不是二次开发”

              这个说法有什么依据呢?
              我倒是觉得OpenERP的实施过程以二次开发为主配置为辅。

              GoodERP -- Odoo China fork

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

                @breterniu
                字符集问题。估计不是因为rule的引入所引起的。

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

                1 条回复 最后回复
                0
                • B 离线
                  B 离线
                  breterniu
                  写于 最后由 编辑
                  #13

                  (1)看了openerp其他模块代码,基于工作流状态的权限设定定义在字段上是通行的做法:如
                  readonly=True, states={'draft':[('readonly',False)]},
                  (2)由于对openerp开发还不是很了解,做出“以实施为主”的判断可能有误。这个问题可延伸至如何实现openerp的商业价值?
                      看了一下,Openerp主要还是面向生产制造企业,咨询和实施的价值应大于二次开发,若不是基于业务模型及开发技术透彻的掌握,二次开发是否会破坏原有的业务设计?
                      若是基于openerp平台开发框架,开发新的行业应用是否是openerp的方向?

                     
                  [quote author=Jeff link=topic=2753.msg9282#msg9282 date=1328691473]
                  “OPENERP应偏实施而不是二次开发”

                  这个说法有什么依据呢?
                  我倒是觉得OpenERP的实施过程以二次开发为主配置为辅。
                  [/quote]

                  1 条回复 最后回复
                  0
                  • mrshellyM 离线
                    mrshellyM 离线
                    mrshelly
                    写于 最后由 编辑
                    #14

                    我猜官方旨在推进 openobject 框架....

                    1 条回复 最后回复
                    0
                    • J 离线
                      J 离线
                      jerry79
                      写于 最后由 编辑
                      #15

                      attrs="{'readonly':[('state','!=','draft')]} 这样的设置只能解决字段在流程的某个状态下的通用权限设置,而不能针对该流程状态下的不同用户做设置,比如说proved状态下,某个按钮只能主管看他,其他用户看不到,就必须加上类似attrs="{'invisible': [('user_id', '!=', uid) ] }",即判断当前用户是否与流程设置的用户相符。这样的设置有些过于麻烦,理论上workflow应该允许为每一个流程节点设置权限,不过还没有研究明白。

                      1 条回复 最后回复
                      0

                      • 登录

                      • 没有帐号? 注册

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