request.function is always going to be the name of the function that has 
been requested -- that's what it is for.

On each request, why don't you just do something like this in a model:

session.last_page = session.this_page or None
session.this_page = (request.controller, request.function)

def require_last_page(controller, function):
    if not (session.last_page == (controller, function) or
            session.last_page == session.this_page):
        redirect(URL(controller, function))

Then, in any action that requires a specific previous page, just include 
code like this:

def second():
    require_last_page('default', 'first')
    ...

If you want to get fancy, you can make require_last_page a decorator.

Note, the session.last_page == session.this_page condition is there to 
allow users to reload a page without having to go back to the required last 
page -- remove that condition if you don't want to allow page reloads.

Anthony

On Wednesday, November 19, 2014 12:02:04 AM UTC-5, T.R.Rajkumar wrote:
>
> @Anthony Yes the session var is OK. But I would like to see that the 
> second page can be visited only after the first page. Keeping the session 
> var flags can be troublesome if we have hundreds of pages and the same 
> session var gets set in some other page. Is their a way out? The 
> request.function seems to be perfect if it stores the first page even 
> inside the second action.
>
> On Saturday, November 15, 2014 3:28:15 PM UTC+5:30, T.R.Rajkumar wrote:
>>
>> In book chapter 3 overview the following is given to restrict access to 
>> second page. 
>>
>> if not request.function=='first' and not session.visitor_name:
>>     redirect(URL('first'))
>>
>> But if I print request.function it says 'second'.
>> How to restrict access to second page only from first page?
>>
>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to