Some more correction to always have the db in the url
bzr revid: nicolas.vanhoren@openerp.com-20130724122328-kbnwq2uois37q74n
This commit is contained in:
parent
3b384da858
commit
2205c3021f
|
@ -88,9 +88,6 @@ def rjsmin(script):
|
||||||
|
|
||||||
db_list = http.db_list
|
db_list = http.db_list
|
||||||
|
|
||||||
def db_monodb_redirect():
|
|
||||||
return http.db_redirect(not config['list_db'])
|
|
||||||
|
|
||||||
db_monodb = http.db_monodb
|
db_monodb = http.db_monodb
|
||||||
|
|
||||||
def redirect_with_hash(url, code=303):
|
def redirect_with_hash(url, code=303):
|
||||||
|
@ -535,16 +532,21 @@ html_template = """<!DOCTYPE html>
|
||||||
class Home(http.Controller):
|
class Home(http.Controller):
|
||||||
|
|
||||||
@http.route('/', type='http', auth="none")
|
@http.route('/', type='http', auth="none")
|
||||||
def index(self, s_action=None, **kw):
|
def index(self, s_action=None, db=None, debug=False, **kw):
|
||||||
if 'db' in kw:
|
debug = debug != False
|
||||||
ndb = kw['db']
|
if db is not None:
|
||||||
lst = http.db_list(True)
|
lst = http.db_list(True)
|
||||||
if ndb in lst and ndb != request.session.db:
|
if db in lst and db != request.session.db:
|
||||||
request.session.logout()
|
request.session.logout()
|
||||||
request.session.db = ndb
|
request.session.db = db
|
||||||
|
|
||||||
|
if db != request.session.db:
|
||||||
|
query = dict(urlparse.parse_qsl(request.httprequest.query_string, keep_blank_values=True))
|
||||||
|
query.update({'db': request.session.db})
|
||||||
|
redirect = request.httprequest.path + '?' + urllib.urlencode(query)
|
||||||
|
return redirect_with_hash(redirect)
|
||||||
|
|
||||||
db = request.session.db
|
db = request.session.db
|
||||||
debug = "debug" in kw
|
|
||||||
|
|
||||||
js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', db=db, debug=debug))
|
js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', db=db, debug=debug))
|
||||||
css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', db=db, debug=debug))
|
css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', db=db, debug=debug))
|
||||||
|
|
|
@ -1057,29 +1057,6 @@ def db_list(force=False, httprequest=None):
|
||||||
dbs = [i for i in dbs if re.match(r, i)]
|
dbs = [i for i in dbs if re.match(r, i)]
|
||||||
return dbs
|
return dbs
|
||||||
|
|
||||||
def db_redirect(match_first_only_if_unique, httprequest=None):
|
|
||||||
httprequest = httprequest or request.httprequest
|
|
||||||
db = None
|
|
||||||
redirect = None
|
|
||||||
|
|
||||||
dbs = db_list(True, httprequest)
|
|
||||||
|
|
||||||
# 1 try the db in the session
|
|
||||||
db_session = httprequest.session.db
|
|
||||||
if db_session in dbs:
|
|
||||||
return (db_session, None)
|
|
||||||
|
|
||||||
# 2 use the first db if user can list databases
|
|
||||||
if dbs and (not match_first_only_if_unique or len(dbs) == 1):
|
|
||||||
db = dbs[0]
|
|
||||||
|
|
||||||
# redirect to the chosen db if multiple are available
|
|
||||||
if db and len(dbs) > 1:
|
|
||||||
query = dict(urlparse.parse_qsl(httprequest.query_string, keep_blank_values=True))
|
|
||||||
query.update({'db': db})
|
|
||||||
redirect = httprequest.path + '?' + urllib.urlencode(query)
|
|
||||||
return (db, redirect)
|
|
||||||
|
|
||||||
def db_monodb(httprequest=None):
|
def db_monodb(httprequest=None):
|
||||||
"""
|
"""
|
||||||
Magic function to find the current database.
|
Magic function to find the current database.
|
||||||
|
@ -1091,8 +1068,25 @@ def db_monodb(httprequest=None):
|
||||||
|
|
||||||
Returns ``None`` if the magic is not magic enough.
|
Returns ``None`` if the magic is not magic enough.
|
||||||
"""
|
"""
|
||||||
return db_redirect(True, httprequest=httprequest)[0]
|
httprequest = httprequest or request.httprequest
|
||||||
|
db = None
|
||||||
|
redirect = None
|
||||||
|
|
||||||
|
dbs = db_list(True, httprequest)
|
||||||
|
|
||||||
|
# 1 try the db already in the session
|
||||||
|
db_session = httprequest.session.db
|
||||||
|
if db_session in dbs:
|
||||||
|
return db_session
|
||||||
|
|
||||||
|
# 2 if there is only one db in the db filters, take it
|
||||||
|
if len(dbs) == 1:
|
||||||
|
return dbs[0]
|
||||||
|
|
||||||
|
# 3 if there are multiple dbs, take the first one only if we can list them
|
||||||
|
if len(dbs) > 1 and config['list_db']:
|
||||||
|
return dbs[0]
|
||||||
|
return None
|
||||||
|
|
||||||
class CommonController(Controller):
|
class CommonController(Controller):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue