Thanks for the note... But I tried it, I don't have the error anymore
but the data is not saved in the DB... I run in debug mode and put and
break point in my action "def register():" and I notice that the form
validation is not successful in the method "register()" of the Class
Auth() of "Tools.py"... I have no clue why it fails... The same value
works fine (recorded in DB) without the AJAX...

If you have any hint please let me know... I search a lot in the
threads of this Web2py group and I can't find an example of how to
used Auth Api with Ajax...

Yannick P.

On Mar 25, 1:19 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
> One more try
>
> def register():
>    next = URL(r=request,f='index')
>    return auth.register(onaccept=lambda
> form:response.headers.update({'web2py-component-
> command':"document.location='%s'"%next}))
>
> On Mar 25, 11:58 am, Yannick <ytchatch...@gmail.com> wrote:
>
>
>
> > Hello thanks Massimo for the note... But I can't make it work... the
> > change_password() doesn't change the value in the DB... So I tried
> > other function just to test like "register()" and in this case i even
> > have an error message saying "TypeError: list objects are
> > unhashable"... I really don't know what I'm doing wrong up here...
> > Below it's the controller and view... Please let me know if you have
> > any idea...
>
> > #################
> > #View "index.html"
> > #################
> > .....
> > .....
> > {{=LOAD('default','register',ajax_trap=True)}}
> > .....
> > .....
> > ###################
> > #Controller: "default.py"
> > ###################
> > def register():
> >    next = URL(r=request,f='index')
> >    return auth.register(onaccept=lambda form:
> > response.headers.update({['web2py-component-
> > command']:"document.location='%s'"%next}))
>
> > def otherAction():
> >    .....
> >    .....
> >    return dict(..........)
>
> > def index():
> >    return (register = register(), otherAction=otherAction())
>
> > #########################
> > # Here is the error message
> > ########################
> > Traceback (most recent call last):
> >   File "gluon/restricted.py", line 173, in restricted
> >   File "C:/Documents and Settings/YannickT/web2py/applications/events/
> > controllers/default.py", line 70, in <module>
> >   File "gluon/globals.py", line 96, in <lambda>
> >   File "C:/Documents and Settings/YannickT/web2py/applications/events/
> > controllers/default.py", line 27, in register
> >   File "gluon/tools.py", line 1271, in register
> >   File "C:/Documents and Settings/YannickT/web2py/applications/events/
> > controllers/default.py", line 27, in <lambda>
> > TypeError: list objects are unhashable
>
> > Thanks for your help,
> > Yannick P.
>
> > On Mar 24, 10:17 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > My bad
>
> > > auth.change_password(onaccept=lambda form:
> > > response.headers.update({'web2py-
> > > component-command']:"document.location='%s'"%next}))
>
> > > On Mar 24, 8:21 pm, Yannick <ytchatch...@gmail.com> wrote:
>
> > > > Sorry but I have a lot of syntax error in the action:
>
> > > > auth.change_password(onaccept=lambda form: response.headers['web2py-
> > > > component-command']="document.location='%s'"%next))
>
> > > > I don't seems to see why... Please let me know if you see it...
> > > > Thanks,
>
> > > > On Mar 24, 2:00 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > > ###################################################
> > > > > <script>
> > > > >   $("#pwdChangeForm").submit(function(){
> > > > >    url={{=URL(r=requet, f="changePwd")}};
> > > > >    ids = ['currentpwd', 'pwd1', 'pwd2'];
> > > > >    ajax(url, ids, 'confirmationMsg');   # This is the Ajax method that
> > > > > is coming with Web2py
> > > > >    return false;
>
> > > > > });
>
> > > > > </script>
>
> > > > > In view:
> > > > > {{=LOAD('defualt','changePwd',ajax_trap=True)}}
>
> > > > > ######################################
> > > > > # Action: (Here I want to use the Auth method named change_password. )
> > > > > ##############################
> > > > > def changePwd:
> > > > >    next = URL(r=request,f='index')
> > > > >    return auth.change_password(onaccept=lambda form:\
> > > > >        response.headers['web2py-component-
> > > > > command'="document.location='%s'" % next)
>
> > > > > On Mar 24, 12:22 pm, Yannick <ytchatch...@gmail.com> wrote:
>
> > > > > > Ok here is a view form to change user password:
> > > > > > ###################################################
> > > > > > <script>
> > > > > >   $("#pwdChangeForm").submit(function(){
> > > > > >    url={{=URL(r=requet, f="changePwd")}};
> > > > > >    ids = ['currentpwd', 'pwd1', 'pwd2'];
> > > > > >    ajax(url, ids, 'confirmationMsg');   # This is the Ajax method 
> > > > > > that
> > > > > > is coming with Web2py
> > > > > >    return false;});
>
> > > > > > </script>
>
> > > > > > <div id="confirmationMsg"></div>
> > > > > > <form id="pwdChangeForm"  method="post">
> > > > > >     Current password:    <input type="password" id="currentpwd"
> > > > > > name="currentpassword">
> > > > > >     new password:         <input type="password" id="pwd1"
> > > > > > name="password1">
> > > > > >     Old password:          <input type="password" id="pwd2"
> > > > > > name="password2">
> > > > > >     <input type="submit" value="Submit">
> > > > > > </form>
> > > > > > ######################################
> > > > > > # Action: (Here I want to use the Auth method named 
> > > > > > change_password. )
> > > > > > ##############################
> > > > > > def changePwd:
> > > > > >    return auth.change_password()
>
> > > > > > So basically from the action I wanted to be able to know when the 
> > > > > > form
> > > > > > is validated and return a confirmation that will be display through
> > > > > > AJAX. I hope you understand what I mean here... Instead of 
> > > > > > returning a
> > > > > > form, I want to return a string that represent a success or an Error
> > > > > > message... How can I do that without the need to create my how code 
> > > > > > to
> > > > > > change the password . Thanks!
>
> > > > > > Yannick P.
>
> > > > > > On Mar 24, 12:11 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > > > > show us your action and explan how you want it to behave in 
> > > > > > > details,
> > > > > > > and I can post an example.
>
> > > > > > > On Mar 24, 11:06 am, Yannick <ytchatch...@gmail.com> wrote:
>
> > > > > > > > Sorry I really don't understand... I have to code my own Auth 
> > > > > > > > function
> > > > > > > > like "register(), login() etc..." it that what you meant ?
>
> > > > > > > > Yes I know I have to create my own action but I wanted to 
> > > > > > > > re-use the
> > > > > > > > Auth Api function by calling them inside my action...
> > > > > > > > So basically what you are saying is that i can't do it that way 
> > > > > > > > ?
>
> > > > > > > > Please let me know if I'm missing something here...
>
> > > > > > > > Thanks a lot,
> > > > > > > > Yannick P.
> > > > > > > > On Mar 24, 11:16 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > > > > > > You should make your own action and use {{=LOAD(..)}}
>
> > > > > > > > > On Mar 24, 9:32 am, Yannick <ytchatch...@gmail.com> wrote:
>
> > > > > > > > > > Hello mate,
> > > > > > > > > > This can be an easy question but I don't know how to used 
> > > > > > > > > > the Web2py
> > > > > > > > > > "Ajax (u,s,t)" function to call build-in Web2py 
> > > > > > > > > > Authentication API.
> > > > > > > > > > It's there any example ?...
>
> > > > > > > > > > There is a cool example using JDiv:
> > > > > > > > > >  def register():
> > > > > > > > > >     return auth.register(onaccept=lambda form: 
> > > > > > > > > > jDiv.flash('try
> > > > > > > > > > login'))
>
> > > > > > > > > > This is cool BUT I DON'T want to use jDiv...
> > > > > > > > > > How can I do the same without using JDIV... But instead i 
> > > > > > > > > > want to use
> > > > > > > > > > AJAX(u,s,t){} function just like any other form that use 
> > > > > > > > > > Ajax function
> > > > > > > > > > to send value ( The only difference here is the fact that 
> > > > > > > > > > I'll send
> > > > > > > > > > value to already build Auth API like auth.register(),
> > > > > > > > > > auth.password_change(), auth.login() etc... )
>
> > > > > > > > > > Please let me know if you have any hints.
>
> > > > > > > > > > Yannick P.

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

Reply via email to