[Checkins] SVN: Sandbox/darrylcousins/mars.view/ Updating

Darryl Cousins darryl at darrylcousins.net.nz
Sun Feb 3 22:21:06 EST 2008


Log message for revision 83482:
  Updating

Changed:
  U   Sandbox/darrylcousins/mars.view/buildout.cfg
  U   Sandbox/darrylcousins/mars.view/src/mars/view/components.py
  D   Sandbox/darrylcousins/mars.view/src/mars/view/ftests/directive.py
  U   Sandbox/darrylcousins/mars.view/src/mars/view/ftests/ftesting.zcml
  U   Sandbox/darrylcousins/mars.view/src/mars/view/ftests/layout.py
  U   Sandbox/darrylcousins/mars.view/src/mars/view/ftests/pagelet.py
  U   Sandbox/darrylcousins/mars.view/src/mars/view/ftests/template.py
  U   Sandbox/darrylcousins/mars.view/src/mars/view/ftests/test_functional.py
  U   Sandbox/darrylcousins/mars.view/src/mars/view/meta.py
  U   Sandbox/darrylcousins/mars.view/src/mars/view/tests.py
  U   Sandbox/darrylcousins/mars.view/src/mars/view/view.txt

-=-
Modified: Sandbox/darrylcousins/mars.view/buildout.cfg
===================================================================
--- Sandbox/darrylcousins/mars.view/buildout.cfg	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/buildout.cfg	2008-02-04 03:21:05 UTC (rev 83482)
@@ -1,24 +1,15 @@
 [buildout]
 develop = .
 parts = test
-eggs-directory = /opt/buildout/mars/eggs
-develop-eggs-directory = /opt/buildout/mars/develop-eggs
-extends = http://grok.zope.org/releaseinfo/grok-0.10.2.cfg
+extends = http://grok.zope.org/releaseinfo/grok-0.11.1.cfg
 versions = versions
-executable = /opt/sandbox/mars/bin/python2.4
 
 [versions]
-zope.securitypolicy = 3.4.0
-zope.app.securitypolicy = 3.4.3
+martian = 0.9.2
 
-
 [test]
 recipe = zc.recipe.testrunner
 eggs = mars.view [test]
 defaults = ['--tests-pattern', '^f?tests$',
 	'-v'
 	]
-
-[zope3]
-location = .
-

Modified: Sandbox/darrylcousins/mars.view/src/mars/view/components.py
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/components.py	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/components.py	2008-02-04 03:21:05 UTC (rev 83482)
@@ -35,7 +35,7 @@
 
 
 class LayoutViewBase(object):
-    layout = None
+    layout = None # allows developer to directly define template
     _layout_name = u'' # will be set if mars.view.layout defined
     _layout_interface = ILayoutTemplate
 

Deleted: Sandbox/darrylcousins/mars.view/src/mars/view/ftests/directive.py
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/ftests/directive.py	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/ftests/directive.py	2008-02-04 03:21:05 UTC (rev 83482)
@@ -1,15 +0,0 @@
-"""
-Test the claimed directives.
-
-  >>> import grok
-  >>> grok.grok('mars.view.ftests.directive')
-
-  >>> from zope.testbrowser.testing import Browser
-  >>> browser = Browser()
-  >>> browser.handleErrors = False
-
-"""
-
-import grok
-import mars.view
-

Modified: Sandbox/darrylcousins/mars.view/src/mars/view/ftests/ftesting.zcml
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/ftests/ftesting.zcml	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/ftests/ftesting.zcml	2008-02-04 03:21:05 UTC (rev 83482)
@@ -1,15 +1,14 @@
 <configure xmlns="http://namespaces.zope.org/zope"
-           xmlns:meta="http://namespaces.zope.org/meta"
-           xmlns:browser="http://namespaces.zope.org/browser"
+           xmlns:grok="http://namespaces.zope.org/grok"
            i18n_domain="zope"
            package="mars.view.ftests">
 
   <include package="grok" file="meta.zcml" />
   <include package="mars.template" file="meta.zcml" />
-  <include package="mars.layer" file="meta.zcml" />
   <include package="mars.view" file="meta.zcml" />
 
   <include package="grok" />
+  <grok:grok package="mars.view.ftests" />
 
 </configure>
 

Modified: Sandbox/darrylcousins/mars.view/src/mars/view/ftests/layout.py
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/ftests/layout.py	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/ftests/layout.py	2008-02-04 03:21:05 UTC (rev 83482)
@@ -1,10 +1,9 @@
 """
 Testing the LayoutView, which unlike grok.View will look up a layout.
 
-  >>> import grok
-  >>> grok.grok('mars.view.ftests.layout')
+  >>> import zope.component
   >>> from mars.view.ftests.layout import Mammoth
-  >>> getRootFolder()["manfred"] = Mammoth()
+  >>> mammoth = getRootFolder()["manfred"] = Mammoth()
 
   >>> from zope.testbrowser.testing import Browser
   >>> browser = Browser()
@@ -16,12 +15,12 @@
 
 Since a layout template is not yet registered, calling the view will fail:
 
-  >>> browser.open("http://localhost/manfred/@@drawing")
+  >>> browser.open("http://localhost/manfred/drawing")
   Traceback (most recent call last):
   ...
   NotFound: ......
 
-  >>> browser.open(skinURL + "/manfred/@@drawing")
+  >>> browser.open(skinURL + "/manfred/drawing")
   Traceback (most recent call last):
   ...
   ComponentLookupError: ......
@@ -40,7 +39,6 @@
   >>> from z3c.template.interfaces import ILayoutTemplate
   >>> from z3c.template.template import TemplateFactory
   >>> from zope.publisher.interfaces.browser import IBrowserRequest
-  >>> import zope.component
   >>> from mars.view.ftests.layout import Drawing
   >>> factory = TemplateFactory(layout, 'text/html')
   >>> zope.component.provideAdapter(factory,
@@ -55,13 +53,12 @@
 
 We can also use mars.template to provide the layout template.
 
-  >>> browser.open(skinURL + "/manfred/@@view")
+  >>> #browser.open(skinURL + "/manfred/@@view")
+  >>> browser.open("http://localhost/manfred/@@view")
   >>> print browser.contents
   <div>View template</div>
 
 """
-import zope.interface
-
 import grok
 import mars.view
 import mars.template
@@ -70,18 +67,20 @@
 class IMyLayer(mars.layer.IMinimalLayer):
     pass
 
-# set layer on module level, all class declarations that use directive
-# mars.layer.layer will use this layer - Skin, views and templates
-mars.layer.layer(IMyLayer)
+# set layer on module level, all class declarations that may use directive
+# grok.layer will use this layer - Skin, views and templates
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+grok.layer(IMyLayer)
 
-class MySkin(mars.layer.Skin):
-    pass
+class MySkin(grok.Skin):
+    grok.layer(IMyLayer)
 
 class Mammoth(grok.Model):
     pass
 
-class Drawing(mars.view.LayoutView):
-    pass
+#class Drawing(mars.view.LayoutView):
+class Drawing(grok.View):
+    grok.layer(IMyLayer)
 
     def render(self):
         return u'Rendered content'

Modified: Sandbox/darrylcousins/mars.view/src/mars/view/ftests/pagelet.py
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/ftests/pagelet.py	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/ftests/pagelet.py	2008-02-04 03:21:05 UTC (rev 83482)
@@ -1,8 +1,6 @@
 """
 Testing the PageletView, which unlike grok.View will look up a layout.
 
-  >>> import grok
-  >>> grok.grok('mars.view.ftests.pagelet')
   >>> from mars.view.ftests.pagelet import Mammoth
   >>> getRootFolder()["manfred"] = Mammoth()
 
@@ -37,9 +35,9 @@
 
 # set layer on module level, all class declarations that use directive
 # mars.layer.layer will use this layer - Skin, views and templates
-mars.layer.layer(IMyLayer)
+grok.layer(IMyLayer)
 
-class MySkin(mars.layer.Skin):
+class MySkin(grok.Skin):
     pass
 
 class Mammoth(grok.Model):

Modified: Sandbox/darrylcousins/mars.view/src/mars/view/ftests/template.py
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/ftests/template.py	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/ftests/template.py	2008-02-04 03:21:05 UTC (rev 83482)
@@ -1,9 +1,7 @@
 """
 Testing the TemplateView, which unlike grok.View will look up a template.
 
-  >>> import grok
   >>> from mars.view.ftests.template import Mammoth, Painting
-  >>> grok.grok('mars.view.ftests.template')
   >>> mammoth = getRootFolder()["manfred"] = Mammoth()
 
   >>> from zope.testbrowser.testing import Browser

Modified: Sandbox/darrylcousins/mars.view/src/mars/view/ftests/test_functional.py
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/ftests/test_functional.py	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/ftests/test_functional.py	2008-02-04 03:21:05 UTC (rev 83482)
@@ -17,7 +17,8 @@
 def test_suite():
     suite = unittest.TestSuite()
     dottedname = 'mars.view.ftests.%s'
-    for name in ['layout', 'template', 'pagelet']:
+    #for name in ['layout', 'template', 'pagelet']:
+    for name in ['layout']:
         test = doctest.DocTestSuite(
                     dottedname % name, setUp=setUp, globs=globs,
                     tearDown=tearDown, optionflags=optionflags)

Modified: Sandbox/darrylcousins/mars.view/src/mars/view/meta.py
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/meta.py	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/meta.py	2008-02-04 03:21:05 UTC (rev 83482)
@@ -7,7 +7,9 @@
 from martian import util
 
 import grok
-from grok.util import get_default_permission, make_checker
+from grok.util import (get_default_permission,
+                       determine_class_directive,
+                       make_checker)
 
 import mars.view
 
@@ -20,17 +22,19 @@
     view_context = None
     provides = zope.interface.Interface
 
-    def grok(self, name, factory, context, module_info, templates):
-        self.view_context = util.determine_class_context(factory, context)
+    def grok(self, name, factory, module_info, config, *kws):
+
         factory.module_info = module_info
         self.factory_name = factory.__name__.lower()
 
-        self.view_layer = util.class_annotation(factory, 'mars.layer.layer',
-                                           None) or module_info.getAnnotation('mars.layer.layer',
-                                               None) or IDefaultBrowserLayer
-
+        self.view_layer = determine_class_directive('grok.layer',
+                                               factory, module_info,
+                                               default=IDefaultBrowserLayer)
         self.view_name = util.class_annotation(factory, 'grok.name',
                                           self.factory_name)
+        self.view_context = determine_class_directive('grok.context',
+                                               factory, module_info,
+                                               default=zope.interface.Interface)
 
         # is name defined for template?
         # if defined a named template is looked up
@@ -43,14 +47,6 @@
         # don't know if this would ever need to be set
         self.provides = util.class_annotation(factory, 'grok.provides',
                                                 self.provides)
-        #print '\nname:', self.view_name,'context:', self.view_context,'factory:', factory,\
-        #      'layer:', self.view_layer, '\n'
-        self.register(factory, module_info)
-
-        # protect view, public by default
-        default_permission = get_default_permission(factory)
-        make_checker(factory, factory, default_permission)
-
         # 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)
@@ -61,48 +57,70 @@
                                 'for XML-RPC methods.'
                                 % (method.__name__, factory), factory)
 
+        # sub classes must provide the registration
+        self.register(factory, config)
+
+        if self.view_name == 'drawing':
+            print '\n'.join([str(factory), str(self.view_context), 
+                 str(self.view_layer), str(self.view_name), str(self.provides)])
+
+        permission = get_default_permission(factory)
+        config.action(
+            discriminator=('protectName', factory, '__call__'),
+            callable=make_checker,
+            args=(factory, factory, permission),
+            )
+
         return True
 
     def register(self, factory, module_info):
-        """Must be defined in subclasses, module_info may be necessary for further lookups"""
+        """Must be defined in subclasses, module_info may be necessary for
+        further lookups"""
         pass
 
 
 class TemplateViewGrokker(ViewGrokkerBase):
     component_class = mars.view.TemplateView
 
-    def register(self, factory, module_info):
+    def register(self, factory, config):
 
-        zope.component.provideAdapter(factory,
-                                 adapts=(self.view_context, self.view_layer),
-                                 provides=self.provides,
-                                 name=self.view_name)
+        adapts = (self.view_context, self.view_layer)
+        config.action( 
+            discriminator=('adapter', adapts, self.provides, self.view_name),
+            callable=zope.component.provideAdapter,
+            args=(factory, adapts, self.provides, self.view_name),
+            )
 
+
 class LayoutViewGrokker(ViewGrokkerBase):
     component_class = mars.view.LayoutView
 
-    def register(self, factory, module_info):
+    def register(self, factory, config):
 
         # is name defined for layout?
         # if defined a named template is looked up
         factory._layout_name = util.class_annotation(factory, 'mars.view.layout', '')
 
-        zope.component.provideAdapter(factory,
-                                 adapts=(self.view_context, self.view_layer),
-                                 provides=self.provides,
-                                 name=self.view_name)
+        adapts = (self.view_context, self.view_layer)
+        config.action( 
+            discriminator=('adapter', adapts, self.provides, self.view_name),
+            callable=zope.component.provideAdapter,
+            args=(factory, adapts, self.provides, self.view_name),
+            )
 
 class PageletViewGrokker(ViewGrokkerBase):
     component_class = mars.view.PageletView
 
-    def register(self, factory, module_info):
+    def register(self, factory, config):
 
         # is name defined for layout?
         # if defined a named template is looked up
         factory._layout_name = util.class_annotation(factory, 'mars.view.layout', '')
 
-        zope.component.provideAdapter(factory,
-                                 adapts=(self.view_context, self.view_layer),
-                                 provides=self.provides,
-                                 name=self.view_name)
+        adapts = (self.view_context, self.view_layer)
+        config.action( 
+            discriminator=('adapter', adapts, self.provides, self.view_name),
+            callable=zope.component.provideAdapter,
+            args=(factory, adapts, self.provides, self.view_name),
+            )
 

Modified: Sandbox/darrylcousins/mars.view/src/mars/view/tests.py
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/tests.py	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/tests.py	2008-02-04 03:21:05 UTC (rev 83482)
@@ -1,9 +1,10 @@
 import unittest
+
+import zope.interface
 from zope.testing import doctest
 from zope.app.testing import setup
+from zope.configuration.config import ConfigurationMachine
 
-import zope.interface
-
 from martian.interfaces import IModuleInfo
 
 class ModuleInfo(object):
@@ -14,7 +15,9 @@
     def getAnnotation(self, name, default):
         return default
 
-globs = dict(module_info=ModuleInfo(), root=setup.placefulSetUp(True))
+globs = dict(module_info=ModuleInfo(),
+             config=ConfigurationMachine(),
+             root=setup.placefulSetUp(True))
 
 optionflags = doctest.NORMALIZE_WHITESPACE + doctest.ELLIPSIS
 

Modified: Sandbox/darrylcousins/mars.view/src/mars/view/view.txt
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/view.txt	2008-02-04 03:20:30 UTC (rev 83481)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/view.txt	2008-02-04 03:21:05 UTC (rev 83482)
@@ -69,13 +69,15 @@
 at start up.
 
   >>> from mars.view.meta import TemplateViewGrokker
-  >>> TemplateViewGrokker().grok('', View, None, module_info, None)
+  >>> TemplateViewGrokker().grok('', View, module_info, config)
   True
 
   >>> from mars.template.meta import TemplateFactoryGrokker
-  >>> TemplateFactoryGrokker().grok('', ViewTemplate, None, module_info, None)
+  >>> TemplateFactoryGrokker().grok('', ViewTemplate, module_info, config)
   True
 
+  >>> config.execute_actions()
+
 We can now look up the view and expect the template to be rendered. We can look
 up the view for ``content`` object because the view is registered for Interface
 using ``grok.context`` directive. We can lookup using the name ``view`` because
@@ -106,13 +108,15 @@
 As before we need to manually ``grok`` the classes.
 
   >>> from mars.view.meta import LayoutViewGrokker
-  >>> LayoutViewGrokker().grok('', LayoutView, None, module_info, None)
+  >>> LayoutViewGrokker().grok('', LayoutView, module_info, config)
   True
 
   >>> from mars.template.meta import LayoutFactoryGrokker
-  >>> LayoutFactoryGrokker().grok('', LayoutViewTemplate, None, module_info, None)
+  >>> LayoutFactoryGrokker().grok('', LayoutViewTemplate, module_info, config)
   True
 
+  >>> config.execute_actions()
+
 We can now look up the view and expect the template to be rendered.
 
   >>> view = zope.component.getMultiAdapter((content, request),
@@ -162,15 +166,18 @@
 As before we need to manually ``grok`` the classes.
 
   >>> from mars.view.meta import PageletViewGrokker
-  >>> PageletViewGrokker().grok('', PageletView, None, module_info, None)
+  >>> PageletViewGrokker().grok('', PageletView, module_info, config)
   True
 
-  >>> LayoutFactoryGrokker().grok('', PageletViewLayout, None, module_info, None)
+  >>> LayoutFactoryGrokker().grok('', PageletViewLayout, module_info, config)
   True
 
-  >>> TemplateFactoryGrokker().grok('', PageletViewTemplate, None, module_info, None)
+  >>> TemplateFactoryGrokker().grok('', PageletViewTemplate, module_info,
+  ...                                                             config)
   True
 
+  >>> config.execute_actions()
+
 We can now look up the view and expect the templates to be rendered.
 
   >>> view = zope.component.getMultiAdapter((content, request),
@@ -214,9 +221,11 @@
 
 First we must grok the view.
 
-  >>> LayoutViewGrokker().grok('', NamedLayoutView, None, module_info, None)
+  >>> LayoutViewGrokker().grok('', NamedLayoutView, module_info, config)
   True
 
+  >>> config.execute_actions()
+
 And try it out. It should fail because we have yet to grok the template.
 
   >>> view = zope.component.getMultiAdapter((content, request),
@@ -229,8 +238,10 @@
 So we see that the view is indeed looking up a named template called ``named``. Lets grok the
 template now and call the view again.
 
-  >>> LayoutFactoryGrokker().grok('', NamedLayout, None, module_info, None)
+  >>> LayoutFactoryGrokker().grok('', NamedLayout, module_info, config)
   True
+  >>> config.execute_actions()
+
   >>> print view()
   <div>My named template</div>
 



More information about the Checkins mailing list