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 [email protected].
For more options, visit https://groups.google.com/d/optout.