I've hacked something based on request.env.query_string because it's
not working
with the session if the first page visited is a protected one.
Unfortunately, I think I might have found a bug.
Here's an excerpt of the user.html file I use:
{{if "/appname/contname" in request.env.query_string:}}
{{extend 'contname-layout.html'}}
{{else:}}
{{extend 'layout.html'}}
{{pass}}
<h2>{{=T( request.args(0).replace('_',' ').capitalize() )}}</h2>
------8<------
When using this version of user.html I have the following error
(copied from the
ticket):
1. Traceback (most recent call last):
2. File "/home/julie/prog/zwip/web2py/gluon/restricted.py", line
193, in restricted
3. ccode = compile2(code,layer)
4. File "/home/julie/prog/zwip/web2py/gluon/restricted.py", line
179, in compile2
5. return compile(code.rstrip().replace('\r\n','\n')+'\n', layer,
'exec')
6. File "/home/julie/prog/zwip/web2py/applications/zwip/views/
default/user.html", line 67
7. elif left_sidebar_enabled != right_sidebar_enabled:
width_content='740px'
8. ^
9. SyntaxError: invalid syntax
10.
And at the end of the ticket:
------8<------
60. response.write('\n\n ', escape=False)
61. #using sidebars need to know what sidebar you want to use
62. #prior of using it, because of static width size of content,
you can use
63. #left_sidebar, right_sidebar, both or none (False left and
right)
64. left_sidebar_enabled =
globals().get('left_sidebar_enabled',False)
65. right_sidebar_enabled =
globals().get('right_sidebar_enabled',False)
66. if left_sidebar_enabled and right_sidebar_enabled:
width_content='63%'
67. elif left_sidebar_enabled != right_sidebar_enabled:
width_content='740px'
68. else: width_content='100%'
69. if left_sidebar_enabled: left_sidebar_style = 'style="display:
block;"'
------>8------
It looks like the "else" introduced in the "user.html" is breaking the
identation
of the code found in the default "layout.html" after the inclusion of
"web2py_ajax.html".
Right now, as a workaround, I'm using another layout but I might have
to also
add code on my layouts later on and that could become problematic.
If there's a better way of doing I'm all ears.
On Oct 2, 6:44 pm, Massimo Di Pierro <[email protected]>
wrote:
> As a quick solution, store the last visited page in session and check
> check in user
>
> is not request.function == 'user':
> session.last_action = request.function
>
> controller A
> @auth.requires_login() --> send to a view user.html specific for
> controller A
> def myfunctionA():
> return dict()
> controller B
> @auth.requires.login() --> send to the default view user.html
> def myfunctionB():
> return dict()
>
> def user():
> # use session.last_action
> return dict(form=auth())
>
> On Oct 2, 2:42 am, Julie Bouillon <[email protected]> wrote:
>
>
>
>
>
>
>
> > On 10/02/2011 06:53 AM, Massimo Di Pierro wrote:> How do you know if a user
> > that has not yet logged is special or not?
> > > Can you provide an example?
>
> > > On Oct 1, 1:22 pm, "[email protected]"
> > > <[email protected]> wrote:
> > >> Hi,
>
> > >> Is it possible to define different auth page for the same application ? I
> > >> mean having an auth page for "regular" user and another one for "special"
> > >> user.
>
> > >> I tried by adding a user function in a specific controller and added a
> > >> user.html for that controller but whenever an authentication is required
> > >> I'm
> > >> sent to the default user.html.
>
> > I presume the kind of user depending on which view they try to access.
>
> > Example:
>
> > controller A
> > @auth.requires_login() --> send to a view user.html specific for
> > controller A
> > def myfunctionA():
> > return dict()
>
> > controller B
> > @auth.requires.login() --> send to the default view user.html
> > def myfunctionB():
> > return dict()
>
> > I know there is the _next value passed to the user.html view, but
> > intuitively it feels like a not that good idea to use that... Anything
> > more elegant than that ?