[Grok-dev] Why must a CodeView have a render() method?
    Martin Aspeli 
    optilude+lists at gmail.com
       
    Sun Jul 12 12:36:15 EDT 2009
    
    
  
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.
> 
> 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?
Mmm... under five.grok, at least, it seems that the view cannot be 
published anyway. I have a view like this:
from five import grok
from zope.interface import Interface
class DebugView(grok.CodeView):
     grok.name('debug')
     grok.context(Interface)
     def render(self):
         import pdb; pdb.set_trace( )
         return ''
However, I can't traverse to @@debug anywhere. This used to work when 
this was just grok.View (which now gives an error).
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