Think!   (ask these questions in your view, and think of how to handle it;
then think if there is any better place to handle it; then decide --- T H I
N K!!! ;-)


On Fri, Oct 9, 2009 at 9:40 PM, ed <[email protected]> wrote:

>
> Hi Massimo,
> Your suggestion is very neat and beyond my limited web2py knowledge:
>
> --------------------------------------------------------------------------------
> Mind that you do not need anything like this if your purpose is login.
> In that case web2py already provides method for login and the user
> info is simply in
> {{=auth.user.first_name}} {{=auth.user.last_name}}
>
> ------------------------------------------------------------------------------
> I tried the above code in the View <p> Hi, {{=auth.user.first_name}}</
> p> unfortunately got an error;
> AttributeError: 'NoneType' object has no attribute 'first_name'
>
> -------------------------------------------------------------------------------
> I searched and found this at Mark Mail:
> auth.user.id  -- this is the global variable 'auth' which has a
> variable named 'user' which in turn has a named  variable called
> 'id'.  This variable is valid only after a user is logged on and it
> refers to the id of the current user.  If no one is logged in,
> auth.user does not exist and has the value of 'None'.  But None has no
> named variable 'id' so you get an error if you try to use it.
>
> ------------------------------------------------------------------------------
> So, definitely with the following Controller code i was not able to
> logged in since my View encountered an "Attribute error: Nonetype
> object has no attribute 'first_name' " and failed to display
> {{=auth.user.first_name}}? The following is the actual code:
> Controller:
> def user:
>    if request.args(0)=='login':
>        form = SQLFORM.factory(
>        Field('emailad', 'emailad',requires=[IS_LENGTH
> (maxsize=30,error_message='Maximum length 30 chars..'),IS_EMAIL(),
> IS_IN_DB(db,'auth_user.email',error_message='Email address does not
> exist.')], required=True, label='Email Address'),
>        Field('password', 'password', requires=[IS_IN_DB
> (db,'auth_user.password',error_message='Password is not the
> same.')],label='Password'))
>        form[0][-1][1].append(INPUT
> (_type='button',_value='Cancel',_onclick="window.location='%s';"%URL
> (r=request,f='index')))
>
>        if form.accepts(request.vars, session):
>            em=request.vars.emailad
>             session.flash = 'You are now logged in %s .' %
> name
>             redirect(URL(r=request,f='loggedin'))
>             return dict(form=form)
> View:
> {{extend 'layout2.html'}}
> <p>
> <p><h3>Hi {{=auth.user.first_name}}</h3></p>
> <p>
> .................
> Massimo, i tried to adopt your code but an error was encountered
> during the run. What shall i do to adopt your code which is very
> simple? Thank you again for your patience and very prompt responses.
>
> On Oct 9, 8:59 pm, mdipierro <[email protected]> wrote:
> > Something like this?
> >
> > def page1():
> >     form=SQLFORM.factory(Field('email',requires=IS_IN_DB
> > (db,'auth_user.email')))
> >     if form.accepts(request.vars, session):
> >           redirect(URL(r=request,f='page2',dict(em=form.vars.email))
> >     return dict(form=form)
> >
> > {{extend 'layout.html'}}{{=form}}
> >
> > def page2():
> >     rows=db(db.auth_user.email==request.vars.em).select()
> >     if not rows: redirect(URL(r=request,f='page1'))
> >     return dict(name=rows.first().first_name)
> >
> > {{extend 'layout.html'}}Hello {{=name}}
> >
> > Mind that you do not need anything like this if your purpose is login.
> > In that case web2py already provides method for login and the user
> > info is simply in
> > {{=auth.user.first_name}} {{=auth.user.last_name}}
> >
> > On Oct 9, 1:34 am, ed <[email protected]> wrote:
> >
> > > Hi Massimo,
> > > Okay, redirect returns page but without any variable. Any hint how to
> > > render a page name "loggedin" that says; "Hi Ed, welcome!" after a
> > > succesful login using the code i created?. Sorry, i'm a newbie with
> > > very limited web2py knowledge and stucked on this.  Thank you in
> > > advance Massimo.
> >
> > > On Oct 9, 11:58 am, mdipierro <[email protected]> wrote:
> >
> > > > mind that redirect is a function that raises an HTTP exception which
> > > > causes the server to send and HTTP 303 response. redirect never
> > > > returns and your view is never rendered.
> >
> > > > Massimo
> >
> > > > On Oct 8, 9:22 pm, ed <[email protected]> wrote:
> >
> > > > > The display went well because i filled a session with a constant
> "Ed"
> > > > > and not a result of a db().select(). So, the constant variable was
> > > > > displayed without a hitch. When i used db().select() the display
> went
> > > > > like:
> > > > > [{'first_name': 'Ed'}]
> > > > > The above display is the result of the following code:
> > > > > Controller:
> > > > > if form.accepts(request.vars, session):
> > > > >     em=request.vars.emailad
> > > > >     name1 =
> db(db.auth_user.email==em).select(db.auth_user.first_name)
> > > > > [0]
> > > > >     name=name1.first_name
> > > > >     return dict(red=redirect(URL(r=request,f='loggedin')),
> name=name)
> > > > > ..................
> > > > > View:
> > > > > {{extend 'layout2.html'}}
> > > > > <p>
> > > > > <p><h3>Hi {{=name}}</h3></p>
> > > > > <p>
> > > > > .................
> > > > >  This was the result of the view, "Hi [{'first_name': 'Ed'}]". I've
> > > > > googled and searched the manual and tried examples but to no avail.
> > > > > Thanks in advance.
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to