[Zope3-dev] Re: wading through zcml...

Chris Withers chris at simplistix.co.uk
Thu Dec 7 06:00:20 EST 2006


Martijn Faassen wrote:
> Chris Withers <chris at simplistix.co.uk> wrote:
>> Martijn Faassen wrote:
>>>         class TemplateView(grok.View):
>>>             template = unassociated
>>>             module_info = module_info_
> 
>> I'm not sure. Debugging becomes a nightmare with generated classes, 
>> which is how I ran into these problems in the first place.
>>
>> Can you explain what the what the above code snippet actually does?
> 
> It generates a view for a template file that doesn't have its own view.

Okay, but isn't this just a currying problem?

If so, there's all the usual python currying solutions, here's one...

class ViewFactory:

    implements(IView)

    def __init__(self,klass):
        self.template = PageTemplateFile(klass.template_name)
        self.klass = klass

    def __call__(self,context,request):
        return self.klass(template,context,request)

class MyView:

    template_name = ''

provideAdapter(ViewFactory(MyView),(IContext,IRequest),IView)

> Possibly. It's not that bad right now. The difficulty is that I do
> need to generate a class, not an instance, as I can only initialize the
> instance when the view is initialized because the context and request
> are needed.

There's something to be said for circumstances where creating an adapter 
each time it's asked for is sub-optimal, but I don't have a good enough 
feel for the problem in its generic sense to make any suggestions...

cheers,

Chris

-- 
Simplistix - Content Management, Zope & Python Consulting
            - http://www.simplistix.co.uk



More information about the Zope3-dev mailing list