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
|
||||
|
||||
def db_monodb_redirect():
|
||||
return http.db_redirect(not config['list_db'])
|
||||
|
||||
db_monodb = http.db_monodb
|
||||
|
||||
def redirect_with_hash(url, code=303):
|
||||
|
@ -535,16 +532,21 @@ html_template = """<!DOCTYPE html>
|
|||
class Home(http.Controller):
|
||||
|
||||
@http.route('/', type='http', auth="none")
|
||||
def index(self, s_action=None, **kw):
|
||||
if 'db' in kw:
|
||||
ndb = kw['db']
|
||||
def index(self, s_action=None, db=None, debug=False, **kw):
|
||||
debug = debug != False
|
||||
if db is not None:
|
||||
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.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
|
||||
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))
|
||||
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)]
|
||||
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):
|
||||
"""
|
||||
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.
|
||||
"""
|
||||
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):
|
||||
|
||||
|
|
Loading…
Reference in New Issue