[Checkins]
SVN: five.grok/branches/regebro-grokcore.view/src/five/grok/
Use the ViewGrokkerBase from grokcore.view.
Lennart Regebro
regebro at gmail.com
Fri Jul 18 09:01:59 EDT 2008
Log message for revision 88501:
Use the ViewGrokkerBase from grokcore.view.
Changed:
U five.grok/branches/regebro-grokcore.view/src/five/grok/__init__.py
U five.grok/branches/regebro-grokcore.view/src/five/grok/meta.py
-=-
Modified: five.grok/branches/regebro-grokcore.view/src/five/grok/__init__.py
===================================================================
--- five.grok/branches/regebro-grokcore.view/src/five/grok/__init__.py 2008-07-18 12:53:55 UTC (rev 88500)
+++ five.grok/branches/regebro-grokcore.view/src/five/grok/__init__.py 2008-07-18 13:01:59 UTC (rev 88501)
@@ -9,6 +9,3 @@
from grokcore.view import template, require, layer, templatedir
from five.grok.components import View, Model, IGrokLayer, Skin
-
-# I don't know why this is necessary:
-from five.grok import testing
\ No newline at end of file
Modified: five.grok/branches/regebro-grokcore.view/src/five/grok/meta.py
===================================================================
--- five.grok/branches/regebro-grokcore.view/src/five/grok/meta.py 2008-07-18 12:53:55 UTC (rev 88500)
+++ five.grok/branches/regebro-grokcore.view/src/five/grok/meta.py 2008-07-18 13:01:59 UTC (rev 88501)
@@ -11,56 +11,33 @@
from Globals import InitializeClass as initializeClass
from grokcore.view import templatereg
+from grokcore.view.meta import ViewGrokkerBase
def default_view_name(factory, module=None, **data):
return factory.__name__.lower()
-class ViewGrokker(martian.ClassGrokker):
+class ViewGrokker(ViewGrokkerBase):
martian.component(grok.View)
- martian.directive(grok.context)
- martian.directive(grok.layer, default=IDefaultBrowserLayer)
- martian.directive(grok.name, get_default=default_view_name)
- martian.directive(grok.require, name='permission')
-
- def grok(self, name, factory, module_info, **kw):
- # Need to store the module info object on the view class so that it
- # can look up the 'static' resource directory.
- factory.module_info = module_info
- return super(ViewGrokker, self).grok(name, factory, module_info, **kw)
-
+
def execute(self, factory, config, context, layer, name, permission, **kw):
if permission is None:
permission = 'zope.Public'
- # find templates
- templates = factory.module_info.getAnnotation('grok.templates', None)
- if templates is not None:
- config.action(
- discriminator=None,
- callable=self.checkTemplates,
- args=(templates, factory.module_info, factory)
- )
+
+ return super(ViewGrokker, self).execute(factory, config, context, layer, name, permission, **kw)
+
+ def checkTemplates(self, templates, module_info, factory):
+ def has_render(factory):
+ # XXX We haven't implemented GrokForm yet
+ return (getattr(factory, 'render', None))
+ #and
+ #not util.check_subclass(factory, grok.components.GrokForm))
+ def has_no_render(factory):
+ return not getattr(factory, 'render', None)
+ templates.checkTemplates(module_info, factory, 'view',
+ has_render, has_no_render)
- # safety belt: make sure that the programmer didn't use
- # @grok.require on any of the view's methods.
- methods = util.methods_from_class(factory)
- for method in methods:
- if grok.require.bind().get(method) is not None:
- raise GrokError('The @grok.require decorator is used for '
- 'method %r in view %r. It may only be used '
- 'for XML-RPC methods.'
- % (method.__name__, factory), factory)
-
- # __view_name__ is needed to support IAbsoluteURL on views
- factory.__view_name__ = name
- adapts = (context, layer)
-
+ def protectName(self, config, factory, permission):
config.action(
- discriminator=('adapter', adapts, interface.Interface, name),
- callable=component.provideAdapter,
- args=(factory, adapts, interface.Interface, name),
- )
-
- config.action(
discriminator = ('five:protectClass', factory),
callable = protectClass,
args = (factory, permission)
@@ -73,19 +50,6 @@
args = (factory,)
)
- return True
-
- def checkTemplates(self, templates, module_info, factory):
- def has_render(factory):
- # XXX We haven't implemented GrokForm yet
- return (getattr(factory, 'render', None))
- #and
- #not util.check_subclass(factory, grok.components.GrokForm))
- def has_no_render(factory):
- return not getattr(factory, 'render', None)
- templates.checkTemplates(module_info, factory, 'view',
- has_render, has_no_render)
-
class SkinGrokker(martian.ClassGrokker):
martian.component(grok.Skin)
martian.directive(grok.layer, default=IBrowserRequest)
More information about the Checkins
mailing list