[Checkins] SVN: grokcore.view/branches/jw-contentproviders/src/grokcore/view/ add tests similar to those on grokcore.viewlet

Jan-Wijbrand Kolman janwijbrand at gmail.com
Thu Jun 23 05:30:03 EDT 2011


Log message for revision 121967:
  add tests similar to those on grokcore.viewlet

Changed:
  U   grokcore.view/branches/jw-contentproviders/src/grokcore/view/__init__.py
  U   grokcore.view/branches/jw-contentproviders/src/grokcore/view/configure.zcml
  A   grokcore.view/branches/jw-contentproviders/src/grokcore/view/meta/contentproviders.py
  U   grokcore.view/branches/jw-contentproviders/src/grokcore/view/meta/views.py

-=-
Modified: grokcore.view/branches/jw-contentproviders/src/grokcore/view/__init__.py
===================================================================
--- grokcore.view/branches/jw-contentproviders/src/grokcore/view/__init__.py	2011-06-23 09:29:43 UTC (rev 121966)
+++ grokcore.view/branches/jw-contentproviders/src/grokcore/view/__init__.py	2011-06-23 09:30:03 UTC (rev 121967)
@@ -19,7 +19,7 @@
 from zope.publisher.interfaces.browser import IBrowserRequest
 from zope.publisher.interfaces.browser import IDefaultBrowserLayer
 
-from grokcore.view.components import View, ViewSupport
+from grokcore.view.components import View, ViewSupport, ContentProvider
 from grokcore.view.components import PageTemplate, PageTemplateFile
 from grokcore.view.interfaces import IGrokSecurityView
 from grokcore.view.components import DirectoryResource

Modified: grokcore.view/branches/jw-contentproviders/src/grokcore/view/configure.zcml
===================================================================
--- grokcore.view/branches/jw-contentproviders/src/grokcore/view/configure.zcml	2011-06-23 09:29:43 UTC (rev 121966)
+++ grokcore.view/branches/jw-contentproviders/src/grokcore/view/configure.zcml	2011-06-23 09:30:03 UTC (rev 121967)
@@ -2,6 +2,7 @@
   xmlns="http://namespaces.zope.org/zope"
   xmlns:grok="http://namespaces.zope.org/grok">
 
+  <include package="zope.contentprovider" />
   <include package="zope.browserresource" />
 
   <!-- ZPT support -->

Added: grokcore.view/branches/jw-contentproviders/src/grokcore/view/meta/contentproviders.py
===================================================================
--- grokcore.view/branches/jw-contentproviders/src/grokcore/view/meta/contentproviders.py	                        (rev 0)
+++ grokcore.view/branches/jw-contentproviders/src/grokcore/view/meta/contentproviders.py	2011-06-23 09:30:03 UTC (rev 121967)
@@ -0,0 +1,52 @@
+#############################################################################
+#
+# Copyright (c) 2006-2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Grokkers for the views code."""
+from zope import component
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+
+import martian
+
+import grokcore.security
+import grokcore.view
+from grokcore.view.interfaces import IContentProvider
+from grokcore.view.meta.views import default_view_name, TemplateGrokker
+
+
+class ContentProviderTemplateGrokker(TemplateGrokker):
+    martian.component(grokcore.view.ContentProvider)
+
+
+class ContentProviderGrokker(martian.ClassGrokker):
+    martian.component(grokcore.view.ContentProvider)
+    martian.directive(grokcore.component.context)
+    martian.directive(grokcore.view.layer, default=IDefaultBrowserLayer)
+    martian.directive(grokcore.view.view)
+    martian.directive(grokcore.component.name, get_default=default_view_name)
+
+    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(ContentProviderGrokker, self).grok(
+            name, factory, module_info, **kw)
+
+    def execute(self, factory, config, context, layer, view, name, **kw):
+        # This will be used to support __name__ on the viewlet manager
+        factory.__view_name__ = name
+
+        config.action(
+            discriminator=('contentprovider', context, layer, view, name),
+            callable=component.provideAdapter,
+            args=(factory, (context, layer, view), IContentProvider, name))
+        return True

Modified: grokcore.view/branches/jw-contentproviders/src/grokcore/view/meta/views.py
===================================================================
--- grokcore.view/branches/jw-contentproviders/src/grokcore/view/meta/views.py	2011-06-23 09:29:43 UTC (rev 121966)
+++ grokcore.view/branches/jw-contentproviders/src/grokcore/view/meta/views.py	2011-06-23 09:30:03 UTC (rev 121967)
@@ -40,7 +40,8 @@
     def grok(self, name, factory, module_info, **kw):
         # Need to store the module info to look for a template
         factory.module_info = module_info
-        return super(TemplateGrokker, self).grok(name, factory, module_info, **kw)
+        return super(TemplateGrokker, self).grok(
+            name, factory, module_info, **kw)
 
     def execute(self, factory, config, **kw):
         # Associate templates to a view or a component. We set the
@@ -63,7 +64,8 @@
     def associate_template(self, module_info, factory):
         component_name = martian.component.bind().get(self).__name__.lower()
         templatereg.associate_template(
-            module_info, factory, component_name, self.has_render, self.has_no_render)
+            module_info, factory, component_name,
+            self.has_render, self.has_no_render)
 
     def has_render(self, factory):
         render = getattr(factory, 'render', None)



More information about the checkins mailing list