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

    当前OPENERP只有一个功能,就是公司内部使用,不过老板又有一个要求,需要给客户那边也用,但是使用的是同一个软件,不同库,客户使用时不能看到其它人使用的库,
    我感觉这个功能应该在多个库时比较有多,当前分享一下做法
    1.有两个域名分别是    a.openerp.com    b.openerp.com
    2.当使用a.openerp.com时,访问数据库A  ,当使用b.openerp.com时,使用数据库B
    3.找到函数:\addons\web\controllers\main.py 下的db_list函数,在函数修改为: ####中为添加的代码
    def db_list(req, force=False):
        proxy = req.session.proxy("db")
        dbs = proxy.list(force)
        h = req.httprequest.environ['HTTP_HOST'].split(':')[0]
        ####################
        onedb=openerp.tools.config.get(h+'_db',False)
        if onedb!=False:
            return [onedb]
        ####################
        d = h.split('.')[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
    4.可以看到,它读取了config中的内容,所以你需要在openerp-server.conf中添加配置:
      a.openerp.com_db=A
      b.openerp.com_db=B
    5.完成

    说明:以前代码不影响正常使用,如果配置文件中没有写相应的数据库,则会按照老方法显示页面,但如要已经配置数据库,那么登录页面中将不会显示数据库选择,强制和已设置的数据库。

    加入ODOO8的方式,修改的代码文件位置是:D:\GreenOdoo\source\openerp\http.py

    修改源码为:

    def db_filter(dbs, httprequest=None):
        httprequest = httprequest or request.httprequest
        h = httprequest.environ.get('HTTP_HOST', '').split(':')[0]
        d, _, r = h.partition('.')
        ##开始进行替换=========
        if r=='':    #只有一级域名
            d='www'
        r=openerp.tools.config.get(d+'_db',dbs)
        ##替换结束=============
        ##原始内容
        #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

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

      本来就是支持的哦

      关键字:  dbfilter

      =======
      <br / [检测到链接无效,已移除] br />
      有个小bug 修正一下就好了

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

        这个很好啊,可以不同域名指向了,cccdos那个链接只能同一个域名下的二级域名有效吧?

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

          [quote author=Pepsi link=topic=16199.msg27367#msg27367 date=1390098564]
          这个很好啊,可以不同域名指向了,cccdos那个链接只能同一个域名下的二级域名有效吧?
          [/quote]

          不是的 ,

          事实上是 你n级域名也只认 最左侧的 hosts 名称

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

            我最终采纳了这个方案,好处是,不同的域名可以指向不同的数据库,域名不用和数据库名存在任何关系,管理员可以设置一个单独的域名,conf文件中不做设置,仍然可以显示并切换database list。
            dbfilter的方案,二级域名的头名跟数据库名要一致,所有的域名都不能显示db list了。 不知道我对dbfilter的理解对不对。。。

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

              赞。 建议将该修改提交给官方......

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

                好帖留名

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

                  odoo 8.0版本出错TypeError: unhashable type: 'list'
                  请教

                  1 条回复 最后回复
                  0

                  • 登录

                  • 没有帐号? 注册

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