openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #00145
[Merge] lp:~openerp-dev/openobject-client-web/login-server-restart into lp:openobject-client-web
vda(Open ERP) has proposed merging lp:~openerp-dev/openobject-client-web/login-server-restart into lp:openobject-client-web.
Requested reviews:
OpenERP SA's Web Client R&D (openerp-dev-web)
When session timeout or cherrypy server restarted, it should redirect to the login page with storing current page url, and when user logged in, it should display current page.
--
https://code.launchpad.net/~openerp-dev/openobject-client-web/login-server-restart/+merge/37841
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-client-web/login-server-restart.
=== modified file 'addons/openerp/controllers/root.py'
--- addons/openerp/controllers/root.py 2010-10-05 11:52:52 +0000
+++ addons/openerp/controllers/root.py 2010-10-07 11:21:15 +0000
@@ -52,9 +52,16 @@
"""
if not next:
- user_action_id = rpc.RPCProxy("res.users").read([rpc.session.uid], ['action_id'], rpc.session.context)[0]['action_id']
- if user_action_id:
- next = '/openerp/home'
+ if getattr(rpc.session,'next_url'):
+ active = None
+ if rpc.session.next_url.has_key('active'):
+ active = rpc.session.next_url['active']
+ next = rpc.session.next_url['next']
+ return self.menu(active = active, next=next)
+ else:
+ user_action_id = rpc.RPCProxy("res.users").read([rpc.session.uid], ['action_id'], rpc.session.context)[0]['action_id']
+ if user_action_id:
+ next = '/openerp/home'
return self.menu(next=next)
@@ -138,7 +145,11 @@
def login(self, db=None, user=None, password=None, style=None, location=None, **kw):
location = url(location or '/', kw or {})
-
+ if not db:
+ db =cherrypy.request.cookie['terp_db'].value
+ if not user:
+ user =cherrypy.request.cookie['terp_user'].value
+
if db and user and user.startswith("anonymous"):
if rpc.session.login(db, user, password):
raise redirect(location)
=== modified file 'addons/openerp/controllers/utils.py'
--- addons/openerp/controllers/utils.py 2010-09-20 11:27:34 +0000
+++ addons/openerp/controllers/utils.py 2010-10-07 11:21:15 +0000
@@ -33,7 +33,7 @@
from openerp.utils import rpc
from openobject import tools
-from openobject.tools import expose
+from openobject.tools import expose, url
__all__ = ["secured", "unsecured", "login"]
@@ -142,14 +142,32 @@
db = kw.get('db', db)
user = kw.get('user', user)
password = kw.get('password', password)
-
+
# See if the user just tried to log in
if rpc.session.login(db, user, password) <= 0:
# Bad login attempt
if action == 'login':
message = _("Bad username or password")
-
- return login(cherrypy.request.path_info, message=message,
+
+ if kw and not rpc.session.is_logged() and not kw.get('active'):
+ from urlparse import urlparse
+ query = urlparse(cherrypy.request.headers['Referer'])
+ rpc.session.next_url = {'next': url(cherrypy.request.path_info, {'id': kw.get('id'), 'model': kw.get('model')})}
+ if query.query:
+ rpc.session.next_url['active'] = query.query.split('=')[-1]
+ return """
+ <html>
+ <head>
+ <script type="text/javascript">
+ window.location.href="/openerp/login"
+ </script>
+ </head>
+ <body>
+ </body>
+ </html>
+ """
+ else:
+ return login(cherrypy.request.path_info, message=message,
db=db, user=user, action=action, origArgs=get_orig_args(kw))
# Authorized. Set db, user name in cookies
Follow ups