来自:http://shine-it.net/index.php/topic,16199.msg27430.html
当前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