An addendum to the below - I realized I wasn't specifying the class-
store field in the quickform.  I have added that by using :class-store
(class-store 'person) in my make-quickform.  I still have the same
problem, however.

-Saikat

On Feb 23, 1:34 pm, Saikat Chakrabarti <[email protected]> wrote:
> Thanks Jan, that worked for me (mostly).  Leslie, I see what you are
> saying about how it might be hacky to not be using a presentation/
> parser, but it feels even more hacky to me to be conflating a lot of
> fields into a single presentation.  In the case of the dual password,
> it seems fine to have a presentation that displays it as such, but
> what if I want to add a captcha to my registration view?  The captcha
> doesn't have a corresponding slot in the model, but it would be used
> by my :satisfies function to make sure the registration is valid.  I
> guess I don't see how by just creating a new presentation I could do
> this properly (i.e. which slot on the model does it make the most
> sense do add the captcha field on to?).  Jan's approach makes more
> sense to me here, but just wondering what your thoughts are.
>
> Jan, the reason I say mostly above is that I have now run into a
> different problem.  I no longer get the error I was getting earlier
> (or any error for that matter), but my object is simply not getting
> created in the database.  The code I have right now 
> is:http://paste.lisp.org/display/76043.  I have been able to create
> things in the database before (before this I had an :on-success method
> defined on my registration view that was writing out clsql syntax to
> create the user, and that was working), so I don't believe it's a
> connection issue.  I realize that this is probably difficult for any
> of you to actually debug, just wondering if anyone has seen a problem
> like this before or if there is something obvious I am not doing.
>
> Additionally, I have another form where I have a view mapped to a
> model that has float and integer fields.  Whenever I tried to submit
> this form, however, I would get an error on all the integer and float
> fields saying that the value is invalid (even if I put in a number
> value into the field).  I saw on another (old) post that the only way
> to make this work was to define a float/integer type and write a
> parser for the type.  I managed to get around it for now by defining a
> writer on each of those fields that just assigns the value to the slot
> of the model, but this seems a bit hacky (maybe not - just seems like
> it should be done more automatically).  Is the proper way to do this
> still to define parsers for float/integer types?
>
> Thanks a lot for all your help!
>
> -Saikat
>
> On Feb 23, 2:06 am, Jan Rychter <[email protected]> wrote:
>
> > Saikat Chakrabarti <[email protected]> writes:
> > > I am trying to create a user registration form that has a "Retype
> > > Password" field in the view (which does not map to the model's slot).
> > > I would like to use the built in functionality in Weblocks to create a
> > > new user through this registration form (without defining my own
> > > method for on-success and writing my own CLSQL, if possible).  
>
> > Here's what I do, it uses the form-level validator support that I
> > implemented in Weblocks a long time ago and :reader/:writer view
> > arguments:
>
> > (defview user-registration-form (:type form
> >                                        [...]
> >                                        :satisfies
> >                                        (lambda (&key password password2 
> > &allow-other-keys)
> >                                          (if (string-equal password 
> > password2)
> >                                              t
> >                                              (values nil "Passwords do not 
> > match."))))
> >   (password :present-as (password :max-length 128) :label "Password"
> >             :writer (lambda (pwd obj)
> >                       (setf (slot-value obj 'password)
> >                             (hash-password pwd)))
> >             :requiredp t)
> >   (password2 :present-as (password :max-length 128) :label "Password 
> > (again)"
> >              :reader (lambda (&rest args) (declare (ignore args)) "")
> >              :writer (lambda (&rest args) (declare (ignore args)))
> >              :requiredp t)
>
> > The 'user' data object only has a 'password' field, of course.
>
> > --J.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"weblocks" 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/weblocks?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to