[Product-Developers] RFC: Venusian-based Python-syntax alternative for ZCML-configuration

Asko Soukka asko.soukka at iki.fi
Sat Jan 4 17:44:25 UTC 2014


Hi,

ajung wrote:
> Having a similar functionality like
> @view_request in Pyramid would be cool...

I had an hour in train to try this out. I hope, I understood this correctly.

I tried out a zope.configuration directive with venusian decorator like


@view_configure(name='hello_world', for_='*',
                 permission='zope2.View')
def hello_world(context, request):
     return u"Hello World!"


which would render the returned result, or


@view_configure(name='hello_world', for_='*',
                 template='templates/hello_world.pt',
                 permission='zope2.View')
def hello_world(context, request):
      return {'content': u"Hello World!"}


which would render hello_world.pt with u"Hello World!" available at 
view/content.

Technically, my directive creates a dynamic BrowserView-based class, 
with decorated function as static method, to be called in __call__. 
Quite ok, but the "dynamic class" might be a problem when debugging 
errors. However, this approach allowed me to re-use existing directives 
and I needed only a few new lines of code for this feature.

So, I don't think that zope.configuration is our problem.

We could have @view_configure for Plone if we'd like to (or maybe 
@page_configure to avoid mixing it with Pyramid's view_configure or Zope 
3's "Views", which are different from BrowserPages). But, of course, 
this would not solve our current issue of having already too many ways 
to define Views and easy-to-find documentation for any of them. 
(Luckily, there's documentation sprints coming up this year \o/).

-Asko


More information about the Product-Developers mailing list