Hi,

ich recently found myself fighting with FormWizard, again. I think its a
known fact that the integrated wizard lacks features and needs to be
refactored, but this time I struggled using one of the third-party
implementations out in the wild
(http://github.com/stephrdev/django-formwizard). The limits a wizard for
forms inevitable implies did catch me this time, which means I needed to
do more than just iterate over forms (I'll write some more details at
the end of this mail).

So this got me thinking. We now have shiny new View-classes, some of
them to handle forms, but many to do other things. Why not use this to
create a new wizard, which just iterates over views (or View-classes) to
provide similar functionality like the current FormWizard does. There
needs to be - of course - some Mixin to add methods to store/load the
saved data into/of some storage, but this would be a thin layer
extending the current views.

Of course a ViewWizard would outplay the FormWizard, because a
FormWizard would just be a ViewWizard containing only Form-Views. So
creating a ViewWizard instead of restructuring a new FormWizard would
mean creating a nice upgrade path, too (deprecate FormWizard, no need
for maintaining backwards compatibility here).

I currently have a working prototype, borrowing many things from
django-formwizard (method names, storage implementation, ...) and it
seems to work fine. This still misses most of the work (docs, test, etc).

So, what do you think. Should we try to move forward to a ViewWizard?

Greetings, David


For the curious, about the shortcomings I ran into:
I tried to build a registration process including payment based on the
FormWizard. This all worked fine until we needed to add more payment
options. Many payment providers (Paypal, Google Checkout, Amazon
Whatever) need you to switch to their site for issuing the payment. As a
Formizard handles the view-part for you there is no (sane) way to
redirect your users to their sites and handle the success-response. A
ViewWizard could just send an standard HttpResponseRedirect and do
anything else a normal view could do. It'm sure there are many other use
cases.

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" 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/django-developers?hl=en.

Reply via email to