> So, wherever you are now using request.args(0), you would instead > reference something like session.nodeID. If session.nodeID doesn't exist, > you then redirect to your router so it can be set. >
That's what I've been experimenting with the last couple of days, it works fine for the single page views, however, nodes can have sites with multiple views, and different nodes can be visited in more than one browser window. In case of sites with multiple views, the router function always routes to an index function, in which I build the menu for the current node and store it in session[id], this is part of the code: aboutnav=db((db.NodeNav.nodeID==id)&(db.NodeNav.navID==db.Nav.id)&(db.Nav.navbarID==ABOUTNAVBARID)).select(db.Nav.ALL,db.NodeNav.ALL,orderby=db.Nav.position).as_list() if aboutnav: session[id].aboutnav=True for r in aboutnav: if r['Nav']['id']==ABOUTNAVID and r['NodeNav']['frontend']: session[id].site_menu.append([T(r['Nav']['name']),False,'#']) elif r['NodeNav']['frontend']: session[id].about_dropdown.append([T(r['Nav']['name']),False,URL(r['Nav']['frontendcontroller'],r['Nav']['function'],args=id)]) f=r['Nav']['function'] if f: session[id].f=True The last three lines, are what I am experimenting with right now. Every function that is referenced by a menu item starts with: def eventList(): f=request.function if not len(request.args): redirect(URL('addressbook','router')) elif not session[request.args(0)]: redirect(URL('addressbook','router',args=request.args(0))) elif not session[request.args(0)].f: redirect(URL('addressbook','router',args=request.args(0))) else: .... So far, this seems to solve the problem. Is it possible to put these conditions in a separate function, and call that function from every function that needs it? Something like: def access(): f=request.function if not len(request.args): redirect(URL('addressbook','router')) elif not session[request.args(0)]: redirect(URL('addressbook','router',args=request.args(0))) elif not session[request.args(0)].f: redirect(URL('addressbook','router',args=request.args(0))) else: return True def eventList(): if access() .... Kind regards, Annet --