[Product-Developers] Re: portlet custom validation
Martin Aspeli
optilude+lists at gmail.com
Thu Jan 14 00:21:02 UTC 2010
msmith64 at naz.edu wrote:
> I'm working on a product that includes several custom portlets, and
for most of them validation is trivial: Does it have a value, or not?
Today, however, I needed to customize validation for a portlet based on
whether or not a value was a valid URL to a valid RSS 1, 2 or ATOM feed.
That turned out to be surprisingly difficult, and I wonder if I've
stumbled upon a bug.
I kind of doubt that
> # I created an exception class to raise the appropriate error:
> class InvalidFeed(ValidationError):
> "Invalid Feed"
>
> # ... a validation function to test the actual case
> # (This version is simplified)
> def validateFeed(value):
> try:
> assert value, value
> except AssertionError:
> raise InvalidFeed(value)
> return True
>
> # ... and the portlet Interface
> class IBlogsPortlet(rss.IRSSPortlet):
> url = TextLine(
> title=u'URL',
> description=u'URL of the feed',
> required=True,
> constraint=validateFeed,
> )
> ...
>
> What's unusual about this is that function validateFeed(value=u'')
gets called when bin/instance fg is run, and of course it throws an
error because value=u'' is not valid, which makes it impossible to start
Zope/Plone. Why would that be?
There is something not in the code above that is calling this code.
Perhaps you have a default value for one of your fields which is being
validated on startup, and the default value is invalid?
Martin
More information about the Product-Developers
mailing list