跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. [分享]openerp-server.conf 中配置 dbfilter 参数无效的解决办法

[分享]openerp-server.conf 中配置 dbfilter 参数无效的解决办法

已定时 已固定 已锁定 已移动 Odoo 安装指南
14 帖子 6 发布者 17.1k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • mrshellyM 离线
    mrshellyM 离线
    mrshelly
    写于 最后由 编辑
    #1

    以前就发现过这个问题, 今天重新在群里同大家讨论了一下.

    有时候可能我们希望用户不从登陆界面的账套选择处进入各个账套(因为如果未曾登陆过OE时, 默认会登陆第一个账套), 这时也容易造成错误. 所以, 一般的做法就是使用 openerp-server.conf 中的 dbfilter 参数进行限定.
    而大部分做法就是

    dbfilter = ^%d$          # 即取 OE WEB访问时取地址栏上 域名的第末子域. 

    即  [检测到链接无效,已移除] 访问时, 会自动设置为 dbfilter = db001

    在 openerp-server.conf 中 限制 db_list = False, dbfilter = ^%d$ 后. 发现并不生效

    从抓包 与 跟踪源码的结果 是
    web 获取当前账套列表 /web/db_list 时, 还是取得了所有的账套列表.
    从 /web/controller/main.py 的 db_list 跟踪得到 openerp.tools.config['dbfilter'] 并没有取到 openerp-server.conf 中的配置项值.而是使用了  /openerp/tools/config.py 文件中

    <br />&nbsp; &nbsp; &nbsp; &nbsp; group.add_option(&quot;--db-filter&quot;, dest=&quot;dbfilter&quot;, default=&#039;.*&#039;,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  help=&quot;Filter listed database&quot;, metavar=&quot;REGEXP&quot;)<br />
    



    中的 default='.' 值

    这个 default='.
    ' 将配置文件中的设置又盖掉了.
    开发群中 上海-baggio(317016042) 给出问题所在. 在 /openerp/tools/config.py 文件中, 在 openerp-server.conf 中的生效项. 必须使用 my_default 参数.

    所以, 将上述行代码改成

    <br />&nbsp; &nbsp; &nbsp; &nbsp; group.add_option(&quot;--db-filter&quot;, dest=&quot;dbfilter&quot;, my_default=&#039;.*&#039;,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  help=&quot;Filter listed database&quot;, metavar=&quot;REGEXP&quot;)<br />
    



    即可以 让 openerp-server.conf 文件中的 dbfilter 项生效.
    其他的配置 文件项,同样的操作方式..

    感谢 上海-baggio(317016042)  的分享..

    1 条回复 最后回复
    0
    • C 离线
      C 离线
      ccdos
      写于 最后由 编辑
      #2

      恭喜,这是又抓到了一个 bug  ?

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

        如果用到 dbfilter 那么.... 这豆是一个BUG...

        如果没有用到. 那么 就忽略....

        1 条回复 最后回复
        0
        • C 离线
          C 离线
          ccdos
          写于 最后由 编辑
          #4

          南京-ccdos(1431494)  15:59:22
          ^%d$  是个正则吗 ?

          我怎么搜不到 %d  的含义呢


          墨尔本-肉山(810333201)  15:59:46
          就是正常的 %d 吧
          重庆-mrshelly(49812643)  15:59:47
          @南京-ccdos  /addons/web/controller/main.py

          db_list method
          %d 非 python 的 %d
          不是 %digit  而是 %domain
          对应还有 %h
          代表  %host

          1 条回复 最后回复
          0
          • C 离线
            C 离线
            ccdos
            写于 最后由 编辑
            #5

            测试了一下 , OK

            谢谢各位分享

            1 条回复 最后回复
            0
            • R 离线
              R 离线
              rufeng1199
              写于 最后由 编辑
              #6

              你那个还是针对配了二级子域名的情况,http://ip:port/web?db=openerp  针对这种情况无效的


              我的做法是 针对这种情况,只能在 init.d 里自启动脚本里 添加  启动命令 附加  [size=13px][font=Verdana]--db-filter='oe8'[/font][/size]

              [font=verdana, arial, helvetica, sans-serif][size=2]这种情况在 openerp8.0下测试通过,客户可以直接访问对外的 pubulic  website 了[/size][/font]


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

                db_filter 本意就是使用二级域名来做数据库的自动选择.
                如果在 init.d 中指定 db-filter 的话,  那一个 OE 实例就只能使用一个账套了.

                使用二级域名. 可以实现一个OE实例多个账套. 而使用者感觉不到有其他账套存在....

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

                  谢谢总监大人,我明白了

                  1 条回复 最后回复
                  0
                  • R 离线
                    R 离线
                    rufeng1199
                    写于 最后由 编辑
                    #9

                    oe8  website特性  要想给公众 public 访问,必须配好单数据库模式,看来只能从oe8代码角度破除这个限制了。

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

                      推荐修改 db_list 或者(db_filter v8.0) 接口,实现顶域与帐套的匹配.

                      [检测到链接无效,已移除]

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

                        def db_filter(dbs, httprequest=None):
                            httprequest = httprequest or request.httprequest
                            h = httprequest.environ.get('HTTP_HOST', '').split(':')[0]
                            d, _, r = h.partition('.')
                            if d == "www" and r:
                                d = r.partition('.')[0]
                            r = openerp.tools.config['dbfilter'].replace('%h', h).replace('%d', d)
                            dbs = [i for i in dbs if re.match(r, i)]
                            return dbs

                        8.0 rc 改成上面这样了,看不懂

                        1 条回复 最后回复
                        0
                        • H 离线
                          H 离线
                          hzren
                          写于 最后由 编辑
                          #12

                          mark一下

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

                            已更新 ODOO8的修改方法 ,参考http://shine-it.net/index.php?topic=16199.msg27338#msg27338

                            1 条回复 最后回复
                            0

                            • 登录

                            • 没有帐号? 注册

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