[Grok-dev] Why must a CodeView have a render() method?
Martin Aspeli
optilude+lists at gmail.com
Sun Jul 12 21:01:23 EDT 2009
Jan-Wijbrand Kolman wrote:
> Martin Aspeli wrote:
>> Hi,
>>
>> I often use views that are not browser pages, i.e. they are not meant to
>> be published, but contain utility functions looked up by traversal in
>> other contexts (e.g. conditional expressions).
>>
>> I had thought this was one of the use cases for a
>> grokcore.view.CodeView, but I guess not, since it requires a render()
>> method.
>
> I'm sorry, but no, that's not the use case. Its mere existence is to be
> able to have views that not use a template to render content versus
> views that have a template, without the complex, hard to explain
> stratetgy for finding an implicitely or explicitely associated template
> and checking there's no render() in that case that we had before.
Right. Then I think the name is confusing. But hey, let's not have that
debate. ;)
>> Would it make sense to either relax this requirement, so that a CodeView
>> without a render method can still be looked up but can't be published
>> directly? Or maybe to add some other kind of base class for this use case?
>
> I looked up a thread of quite a while ago where we discussed this before.
>
> Even after re-reading the thread some nuances for such a component are
> not completely clear to me. I would in any way encourage to write a
> megrok.* package to extend Grok with such a component! Eventually this
> component could then go into "core" Grok of course.
Erm, it's pretty straightforward, I think. Just don't implement __call__
and don't have any required attributes (in particular, don't require
render) and don't look for a template.
For an example, look at
http://svn.plone.org/svn/plone/plone.app.layout/trunk/plone/app/layout/globals/portal.py
and
http://svn.plone.org/svn/plone/plone.app.layout/trunk/plone/app/layout/globals/configure.zcml
Lots of templates do things like
context/@@plone_portal_state/navigation_root_url.
One thing to note: you need to be able to declare security on the
methods, so that they're publicly accessible.
Martin
--
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book
More information about the Grok-dev
mailing list