[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