[Grok-dev] Re: grok directive for only grokking during development
mode
Philipp von Weitershausen
philipp at weitershausen.de
Thu Feb 7 10:14:12 EST 2008
Martijn Faassen wrote:
> Hi there,
>
> I think it would be useful to have a directive that can be put on a
> component so it only gets grokked during development mode, not in
> production mode. Something like this:
>
> class MyView(grok.View):
> grok.devel()
>
> 'MyView' would only be grokked and thus only registered in development
> mode, not in production mode. This requires us figuring out what
> development-mode and production-mode currently mean in Zope and how to
> detect it during the grokking process...
>
> Or perhaps we should generalize this to the tagging story we already
> discussed quite a while ago:
>
> class MyView(grok.View):
> grok.tag('devel')
>
> the 'grok.tag' directive would receive one or more tags. Tags are then
> used to determine what gets grokked or not, perhaps like this:
>
> <grok:grok package="." include_tags="a b" exclude_tags="c d" />
>
> It'd be nice to be able to spell out the include_tags and exclude_tags
> in Python somehow, so that we don't end up writing a lot of ZCML in the
> end. :)
>
> Some tags could be given special meaning, like 'devel', which means
> "don't include during production mode". Anyway, a bit of design to work
> out.
>
> What do people think? Ideas? Suggestions?
I like this. I would suggest working closely with ZCML conditionals,
mostly because our grokkers already use the underlying ZCML action
machinery and it would integrate with the rest of Zope 3 very nicely.
I think especially the ability to check for "features" is useful here
(see also my response to Wichert down the thread).
I could see something like this:
class DebugView(grok.View):
grok.condition(have='devmode')
(much like <browser:view zcml:condition="have devmode" ... />)
Here's another useful example:
class PDFView(grok.View):
grok.condition(installed='reportlab')
def render(self):
import reportlab
...
(analogous to <browser:view zcml:condition="installed reportlab" ... />)
More information about the Grok-dev
mailing list