add --db-filter option

bzr revid: al@openerp.com-20110713102612-0lu8s1ausql3j07s
This commit is contained in:
Antony Lesuisse 2011-07-13 12:26:12 +02:00
parent 0485c630de
commit 3acbdf8153
3 changed files with 31 additions and 24 deletions

View File

@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
import base64
import glob, os
import base64, glob, os, re
from xml.etree import ElementTree
from cStringIO import StringIO
@ -55,6 +54,20 @@ class Xml2Json:
# OpenERP Web base Controllers
#----------------------------------------------------------
class Database(openerpweb.Controller):
_cp_path = "/base/database"
@openerpweb.jsonrequest
def get_databases_list(self, req):
proxy = req.session.proxy("db")
dbs = proxy.list()
h = req.httprequest.headers['Host'].split(':')[0]
d = h.split(':')[0]
r = cherrypy.config['openerp.dbfilter'].replace('%h',h).replace('%d',d)
print "h,d",h,d,r
dbs = [i for i in dbs if re.match(r,i)]
return {"db_list": dbs}
class Session(openerpweb.Controller):
_cp_path = "/base/session"
@ -103,13 +116,6 @@ class Session(openerpweb.Controller):
return req.session.model('ir.ui.view_sc').get_sc(req.session._uid, "ir.ui.menu",
req.session.eval_context(req.context))
@openerpweb.jsonrequest
def get_databases_list(self, req):
proxy = req.session.proxy("db")
dbs = proxy.list()
return {"db_list": dbs}
@openerpweb.jsonrequest
def modules(self, req):
return {"modules": [name
@ -230,14 +236,14 @@ class Session(openerpweb.Controller):
if not saved_actions:
return None
return saved_actions["actions"].get(key)
def eval_context_and_domain(session, context, domain=None):
e_context = session.eval_context(context)
# should we give the evaluated context as an evaluation context to the domain?
e_domain = session.eval_domain(domain or [])
return e_context, e_domain
def load_actions_from_ir_values(req, key, key2, models, meta, context):
Values = req.session.model('ir.values')
actions = Values.get(key, key2, models, meta, context)
@ -301,7 +307,6 @@ def generate_views(action):
return
action['views'] = [(view_id, view_modes[0])]
def fix_view_modes(action):
""" For historical reasons, OpenERP has weird dealings in relation to
view_mode and the view_type attribute (on window actions):
@ -545,7 +550,7 @@ class View(openerpweb.Controller):
# todo fme?: check that we should pass the evaluated context here
self.process_view(request.session, fvg, context, transform)
return fvg
def process_view(self, session, fvg, context, transform):
# depending on how it feels, xmlrpclib.ServerProxy can translate
# XML-RPC strings to ``str`` or ``unicode``. ElementTree does not
@ -809,3 +814,5 @@ class Action(openerpweb.Controller):
def run(self, req, action_id):
return clean_action(req.session.model('ir.actions.server').run(
[action_id], req.session.eval_context(req.context)), req.session)
#

View File

@ -930,7 +930,7 @@ openerp.base.Login = openerp.base.Controller.extend({
},
start: function() {
var self = this;
this.rpc("/base/session/get_databases_list", {}, function(result) {
this.rpc("/base/database/get_databases_list", {}, function(result) {
self.db_list = result.db_list;
self.display();
}, function() {

View File

@ -270,6 +270,9 @@ class JsonRequest(object):
self.request = request
self.params = request.get("params", {})
self.applicationsession = applicationsession
self.httprequest = cherrypy.request
self.httpresponse = cherrypy.response
self.httpsession = cherrypy.session
self.httpsession_id = "cookieid"
self.httpsession = cherrypy.session
self.session_id = self.params.pop("session_id", None) or uuid.uuid4().hex
@ -454,22 +457,19 @@ def main(argv):
os.environ["TZ"] = "UTC"
DEFAULT_CONFIG = {
'openerp.server.host': '127.0.0.1',
'openerp.server.port': 8069,
'server.socket_port': 8002,
'server.socket_host': '0.0.0.0',
'tools.sessions.on': True,
'tools.sessions.storage_type': 'file',
'tools.sessions.storage_path': os.path.join(tempfile.gettempdir(), "cpsessions"),
'tools.sessions.timeout': 60
}
# Parse config
op = optparse.OptionParser()
op.add_option("-p", "--port", dest="server.socket_port", help="listening port", type="int", metavar="NUMBER")
op.add_option("-s", "--session-path", dest="tools.sessions.storage_path", help="directory used for session storage", metavar="DIR")
op.add_option("--server-host", dest="openerp.server.host", help="OpenERP server hostname", metavar="HOST")
op.add_option("--server-port", dest="openerp.server.port", help="OpenERP server port", type="int", metavar="NUMBER")
op.add_option("-p", "--port", dest="server.socket_port", default=8002, help="listening port", type="int", metavar="NUMBER")
op.add_option("-s", "--session-path", dest="tools.sessions.storage_path", default=os.path.join(tempfile.gettempdir(), "cpsessions"), help="directory used for session storage", metavar="DIR")
op.add_option("--server-host", dest="openerp.server.host", default='127.0.0.1', help="OpenERP server hostname", metavar="HOST")
op.add_option("--server-port", dest="openerp.server.port", default=8069, help="OpenERP server port", type="int", metavar="NUMBER")
op.add_option("--db-filter", dest="openerp.dbfilter", default='.*', help="Filter listed database", metavar="REGEXP")
(o, args) = op.parse_args(argv[1:])
o = vars(o)
for k in o.keys():
@ -480,8 +480,8 @@ def main(argv):
cherrypy.tree.mount(Root())
cherrypy.config.update(config=DEFAULT_CONFIG)
if os.path.exists(os.path.join(os.path.dirname( os.path.dirname(__file__)),'openerp-web.cfg')):
cherrypy.config.update(os.path.join(os.path.dirname( os.path.dirname(__file__)),'openerp-web.cfg'))
if os.path.exists(os.path.join(path_root,'openerp-web.cfg')):
cherrypy.config.update(os.path.join(path_root,'openerp-web.cfg'))
if os.path.exists(os.path.expanduser('~/.openerp_webrc')):
cherrypy.config.update(os.path.expanduser('~/.openerp_webrc'))
cherrypy.config.update(o)