[ADD] javascript hooks for LoginForm and debug forwarding
bzr revid: fme@openerp.com-20140114111707-ts3ik25p4o2vysxb
This commit is contained in:
parent
75e02860c2
commit
01f3648d3a
|
@ -560,14 +560,15 @@ html_template = """<!DOCTYPE html>
|
|||
</html>
|
||||
"""
|
||||
|
||||
def render_bootstrap_template(db, template, values=None, **kw):
|
||||
def render_bootstrap_template(db, template, values=None, debug=False, **kw):
|
||||
if values is None:
|
||||
values = {}
|
||||
values.update(kw)
|
||||
values['debug'] = debug
|
||||
|
||||
for res in ['js', 'css']:
|
||||
if res not in values:
|
||||
values[res] = manifest_list(res, db=db, debug=values.get('debug', request.debug))
|
||||
values[res] = manifest_list(res, db=db, debug=debug)
|
||||
|
||||
if 'modules' not in values:
|
||||
values['modules'] = module_boot(db=db)
|
||||
|
@ -581,13 +582,11 @@ def render_bootstrap_template(db, template, values=None, **kw):
|
|||
class Home(http.Controller):
|
||||
|
||||
@http.route('/', type='http', auth="none")
|
||||
def index(self, s_action=None, db=None, debug=False, **kw):
|
||||
def index(self, s_action=None, db=None, **kw):
|
||||
return redirect_with_hash('/web', keep_query=True)
|
||||
|
||||
@http.route('/web', type='http', auth="none")
|
||||
def web_client(self, s_action=None, db=None, debug=False, **kw):
|
||||
debug = debug is not False # we just check presence of `debug` query param
|
||||
|
||||
def web_client(self, s_action=None, db=None, **kw):
|
||||
# if db not provided, use the session one
|
||||
if not db:
|
||||
db = request.session.db
|
||||
|
@ -607,22 +606,24 @@ class Home(http.Controller):
|
|||
request.session.db = db
|
||||
|
||||
if request.session.uid:
|
||||
html = render_bootstrap_template(db, "web.webclient_bootstrap")
|
||||
html = render_bootstrap_template(db, "web.webclient_bootstrap", debug=request.debug)
|
||||
return request.make_response(html, {'Cache-Control': 'no-cache', 'Content-Type': 'text/html; charset=utf-8'})
|
||||
else:
|
||||
return redirect_with_hash('/web/login', keep_query=True)
|
||||
|
||||
@http.route('/web/login', type='http', auth="none")
|
||||
def web_login(self, redir='/web', **kw):
|
||||
def web_login(self, redirect=None, **kw):
|
||||
assert request.session.db is not None
|
||||
values = request.params.copy()
|
||||
values['redir'] = redir
|
||||
if not redirect:
|
||||
redirect = '/web?' + request.httprequest.query_string
|
||||
values['redirect'] = redirect
|
||||
if request.httprequest.method == 'POST':
|
||||
uid = request.session.authenticate(request.session.db, request.params['login'], request.params['password'])
|
||||
if uid is not False:
|
||||
return set_cookie_and_redirect(redir)
|
||||
return redirect_with_hash(redirect)
|
||||
values['authentication_failed'] = True
|
||||
return render_bootstrap_template(request.session.db, 'web.login', values)
|
||||
return render_bootstrap_template(request.session.db, 'web.login', values, debug=request.debug)
|
||||
|
||||
@http.route('/login', type='http', auth="none")
|
||||
def login(self, db, login, key):
|
||||
|
@ -797,22 +798,20 @@ class Proxy(http.Controller):
|
|||
class Database(http.Controller):
|
||||
|
||||
@http.route('/web/database/selector', type='http', auth="none")
|
||||
def selector(self, debug=False):
|
||||
debug = debug is not False # we just check presence of `debug` query param
|
||||
def selector(self, **kw):
|
||||
dbs = http.db_list(True)
|
||||
if not dbs:
|
||||
return redirect_with_hash('/web/database/manager', keep_query=['debug'])
|
||||
return env.get_template("database_selector.html").render({
|
||||
'databases': dbs,
|
||||
'debug': debug,
|
||||
'debug': request.debug,
|
||||
})
|
||||
|
||||
@http.route('/web/database/manager', type='http', auth="none")
|
||||
def manager(self, debug=False):
|
||||
def manager(self, **kw):
|
||||
request.session.logout()
|
||||
debug = debug is not False # we just check presence of `debug` query param
|
||||
js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', debug=debug))
|
||||
css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', debug=debug))
|
||||
js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', debug=request.debug))
|
||||
css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', debug=request.debug))
|
||||
|
||||
r = html_template % {
|
||||
'js': js,
|
||||
|
|
|
@ -1483,6 +1483,24 @@ instance.web.embed = function (origin, dbname, login, key, action, options) {
|
|||
client.insertAfter(currentScript);
|
||||
};
|
||||
|
||||
openerp.web.LoginForm = openerp.web.Widget.extend({
|
||||
init: function ($form) {
|
||||
this._super(/* no parent */);
|
||||
this.setElement($form);
|
||||
this.$el.on('submit', this.on_submit);
|
||||
this.start();
|
||||
},
|
||||
start: function () {
|
||||
if (location.hash) {
|
||||
this.$el.attr('action', this.$el.attr('action') + location.hash);
|
||||
}
|
||||
return this._super();
|
||||
},
|
||||
on_submit: function () {
|
||||
return true;
|
||||
},
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
|
||||
|
|
|
@ -47,12 +47,19 @@
|
|||
|
||||
<template id="web.login" name="Login">
|
||||
<t t-call="web.layout">
|
||||
<t t-set="head">
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
var login_form = new openerp.web.LoginForm($('.oe_login_form'));
|
||||
});
|
||||
</script>
|
||||
</t>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4"> </div>
|
||||
<div class="col-md-4">
|
||||
<img src="/web/static/src/img/logo2.png"/>
|
||||
<form role="form" action="/web/login" method="post">
|
||||
<form class="oe_login_form" role="form" t-attf-action="/web/login{{ '?debug' if debug else '' }}" method="post">
|
||||
<img src="/web/static/src/img/logo2.png"/>
|
||||
<div class="form-group">
|
||||
<label for="login">Login</label>
|
||||
<input type="text" name="login" t-att-value="login" id="login" class="form-control" placeholder="Enter login" required="required" autofocus="autofocus"/>
|
||||
|
@ -61,7 +68,7 @@
|
|||
<label for="password">Password</label>
|
||||
<input type="password" name="password" id="password" class="form-control" placeholder="Password" required="required"/>
|
||||
</div>
|
||||
<input type="hidden" name="redir" t-att-value="redir"/>
|
||||
<input type="hidden" name="redirect" t-att-value="redirect"/>
|
||||
<button type="submit" class="btn btn-default">Log in</button>
|
||||
<p class="alert alert-danger" t-if="authentication_failed">
|
||||
Wrong login/password
|
||||
|
|
Loading…
Reference in New Issue