Jim Fulton wrote:
Amos Latteier wrote:
(snip)
It may be that ZPublisher doesn't have much business validating form input.
I agree. ;)
When I complain to Jim Fulton that the converters are pretty lame he usually tells me that they are not for form validation, but for argument marshalling.
Exactly. Input validation, error reporting, and other UI activities should be done at a much higher level. ZPublisher is a very low-level tool meant for basic communication.
Actually, the ideal would be to have as much of the shallow, "pure UI" type validation happen on the client side: required fields, valid integers / dates / phone numbers, etc. Only "deep" validations (those which depend on actual business logic) should be done in Zope. I recall a chunk of DTML from this list which I used at one point (but can't find now :) to generate simple JavaScript validations, based on the converter types. Worked nicely, if in a fairly limited scope.
Obviously, we made the mistake early on of introducting "required", which really is an input validation feature. This was before we realized that we couldn't hope to do a good job of validation at such a low level.
Improving the ZPublisher converters is a worthwhile problem, IMO.
I agree, It would be nice to do more sophisticated marshalling. ;)
In addition, making ZPublisher's error reporting more flexible is also a worthwhile project.
Well, It would be worthwhile to make ZPublisher provide better hooks to let application handle errors detected by ZPublisher. This is definately on the to do list.
I also think that a default value mechanism of some kind would make sense. This would help in other situations too.
I personally would like to see the default behavior for exception handling be to render the exception object as visible HTML. While a Python backtrace might be disconcerting to some users, the "sorry, this site is experiencing technical difficulties" is hardly less so. -- ========================================================= Tres Seaver tseaver@palladion.com 713-523-6582 Palladion Software http://www.palladion.com