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 followed this documentation, because the portlet uses formlib: http://plone.org/documentation/manual/developer-manual/forms/using-zope.formlib/adding-validation # 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? Best wishes, Michael A. Smith Web & Digital / Academic Technologies Manager Nazareth College _______________________________________________ Product-Developers mailing list [email protected] http://lists.plone.org/mailman/listinfo/product-developers
