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

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

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

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

通过域名方式决定使用哪个数据库的方式分享



  • 当前OPENERP只有一个功能,就是公司内部使用,不过老板又有一个要求,需要给客户那边也用,但是使用的是同一个软件,不同库,客户使用时不能看到其它人使用的库,<br />我感觉这个功能应该在多个库时比较有多,当前分享一下做法<br />1.有两个域名分别是    a.openerp.com    b.openerp.com<br />2.当使用a.openerp.com时,访问数据库A  ,当使用b.openerp.com时,使用数据库B<br />3.找到函数:\addons\web\controllers\main.py 下的db_list函数,在函数修改为: ####中为添加的代码<br />def db_list(req, force=False):<br />    proxy = req.session.proxy("db")<br />    dbs = proxy.list(force)<br />    h = req.httprequest.environ['HTTP_HOST'].split(':')[0]<br />    ####################<br />    onedb=openerp.tools.config.get(h+'_db',False)<br />    if onedb!=False:<br />        return [onedb]<br />    ####################<br />    d = h.split('.')[0]<br />    r = openerp.tools.config['dbfilter'].replace('%h', h).replace('%d', d)<br />    dbs = [i for i in dbs if re.match(r, i)]<br />    return dbs<br />4.可以看到,它读取了config中的内容,所以你需要在openerp-server.conf中添加配置:<br />  a.openerp.com_db=A<br />  b.openerp.com_db=B<br />5.完成<br /><br />说明:以前代码不影响正常使用,如果配置文件中没有写相应的数据库,则会按照老方法显示页面,但如要已经配置数据库,那么登录页面中将不会显示数据库选择,强制和已设置的数据库。<br /><br />加入ODOO8的方式,修改的代码文件位置是:D:\GreenOdoo\source\openerp\http.py<br /><br />修改源码为:<br /><br />def db_filter(dbs, httprequest=None):<br />    httprequest = httprequest or request.httprequest<br />    h = httprequest.environ.get('HTTP_HOST', '').split(':')[0]<br />    d, _, r = h.partition('.')<br />    ##开始进行替换=========<br />    if r=='':    #只有一级域名<br />        d='www'<br />    r=openerp.tools.config.get(d+'_db',dbs)<br />    ##替换结束=============<br />    ##原始内容<br />    #if d == "www" and r:<br />    #    d = r.partition('.')[0]<br />    #r = openerp.tools.config['dbfilter'].replace('%h', h).replace('%d', d)<br />    ##原始内容结束<br />    dbs = [i for i in dbs if re.match(r, i)]<br />    return dbs<br />



  • 当前OPENERP只有一个功能,就是公司内部使用,不过老板又有一个要求,需要给客户那边也用,但是使用的是同一个软件,不同库,客户使用时不能看到其它人使用的库,<br />我感觉这个功能应该在多个库时比较有多,当前分享一下做法<br />1.有两个域名分别是    a.openerp.com    b.openerp.com<br />2.当使用a.openerp.com时,访问数据库A  ,当使用b.openerp.com时,使用数据库B<br />3.找到函数:\addons\web\controllers\main.py 下的db_list函数,在函数修改为: ####中为添加的代码<br />def db_list(req, force=False):<br />    proxy = req.session.proxy("db")<br />    dbs = proxy.list(force)<br />    h = req.httprequest.environ['HTTP_HOST'].split(':')[0]<br />    ####################<br />    onedb=openerp.tools.config.get(h+'_db',False)<br />    if onedb!=False:<br />        return [onedb]<br />    ####################<br />    d = h.split('.')[0]<br />    r = openerp.tools.config['dbfilter'].replace('%h', h).replace('%d', d)<br />    dbs = [i for i in dbs if re.match(r, i)]<br />    return dbs<br />4.可以看到,它读取了config中的内容,所以你需要在openerp-server.conf中添加配置:<br />  a.openerp.com_db=A<br />  b.openerp.com_db=B<br />5.完成<br /><br />说明:以前代码不影响正常使用,如果配置文件中没有写相应的数据库,则会按照老方法显示页面,但如要已经配置数据库,那么登录页面中将不会显示数据库选择,强制和已设置的数据库。<br /><br />加入ODOO8的方式,修改的代码文件位置是:D:\GreenOdoo\source\openerp\http.py<br /><br />修改源码为:<br /><br />def db_filter(dbs, httprequest=None):<br />    httprequest = httprequest or request.httprequest<br />    h = httprequest.environ.get('HTTP_HOST', '').split(':')[0]<br />    d, _, r = h.partition('.')<br />    ##开始进行替换=========<br />    if r=='':    #只有一级域名<br />        d='www'<br />    r=openerp.tools.config.get(d+'_db',dbs)<br />    ##替换结束=============<br />    ##原始内容<br />    #if d == "www" and r:<br />    #    d = r.partition('.')[0]<br />    #r = openerp.tools.config['dbfilter'].replace('%h', h).replace('%d', d)<br />    ##原始内容结束<br />    dbs = [i for i in dbs if re.match(r, i)]<br />    return dbs<br />



  • 本来就是支持的哦<br /><br />关键字:  dbfilter<br /><br />=======<br /><br />http://shine-it.net/index.php/topic,14517.html<br /><br />有个小bug 修正一下就好了



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



  • [quote author=Pepsi link=topic=16199.msg27367#msg27367 date=1390098564]<br />这个很好啊,可以不同域名指向了,cccdos那个链接只能同一个域名下的二级域名有效吧?<br />[/quote]<br /><br />不是的 ,<br /><br />事实上是 你n级域名也只认 最左侧的 hosts 名称<br />



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



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



  • 好帖留名



  • odoo 8.0版本出错TypeError: unhashable type: 'list'<br />请教


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待