← Back to team overview

openerp-dev-web team mailing list archive

[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