[Checkins] SVN: Sandbox/darrylcousins/mars. Working on tests

Darryl Cousins darryl at darrylcousins.net.nz
Fri Jul 20 06:01:58 EDT 2007


Log message for revision 78219:
  Working on tests

Changed:
  U   Sandbox/darrylcousins/mars.adapter/src/mars/adapter/adapter.txt
  U   Sandbox/darrylcousins/mars.macro/src/mars/macro/macro.txt
  U   Sandbox/darrylcousins/mars.view/src/mars/view/components.py
  U   Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/meta.py
  U   Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/viewlet.txt

-=-
Modified: Sandbox/darrylcousins/mars.adapter/src/mars/adapter/adapter.txt
===================================================================
--- Sandbox/darrylcousins/mars.adapter/src/mars/adapter/adapter.txt	2007-07-20 09:51:04 UTC (rev 78218)
+++ Sandbox/darrylcousins/mars.adapter/src/mars/adapter/adapter.txt	2007-07-20 10:01:57 UTC (rev 78219)
@@ -37,7 +37,7 @@
 The Adapter
 -----------
 
-First we define an adapter that we wish to look up for the `field` object. It is
+Here we define an adapter that we wish to look up for the `field` object. It is
 a simple adapter that will take only the adapted object in its __init__ method.
 
   >>> class ValueAdapter(object):
@@ -55,7 +55,7 @@
 ----------------
 
 Then we can define the adapter factory that subclasses AdapterFactory and
-contains a single directive (which is required) that defined the adapter to be
+contains a single directive (which is required) that defines the factory to be
 used.
 
   >>> class UnNamedValueAdapter(mars.adapter.AdapterFactory):

Modified: Sandbox/darrylcousins/mars.macro/src/mars/macro/macro.txt
===================================================================
--- Sandbox/darrylcousins/mars.macro/src/mars/macro/macro.txt	2007-07-20 09:51:04 UTC (rev 78218)
+++ Sandbox/darrylcousins/mars.macro/src/mars/macro/macro.txt	2007-07-20 10:01:57 UTC (rev 78219)
@@ -29,7 +29,6 @@
 
   >>> content = Content()
 
-
 Macro Template
 --------------
 

Modified: Sandbox/darrylcousins/mars.view/src/mars/view/components.py
===================================================================
--- Sandbox/darrylcousins/mars.view/src/mars/view/components.py	2007-07-20 09:51:04 UTC (rev 78218)
+++ Sandbox/darrylcousins/mars.view/src/mars/view/components.py	2007-07-20 10:01:57 UTC (rev 78219)
@@ -58,8 +58,7 @@
 
 class LayoutView(LayoutViewBase, BrowserPage):
 
-    def __init__(self, context, request):
-        BrowserPage.__init__(self, context, request)
+    __init__ = BrowserPage.__init__
 
 class PageletView(TemplateViewBase, LayoutViewBase, BrowserPage):
     zope.interface.implements(IPagelet)

Modified: Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/meta.py
===================================================================
--- Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/meta.py	2007-07-20 09:51:04 UTC (rev 78218)
+++ Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/meta.py	2007-07-20 10:01:57 UTC (rev 78219)
@@ -14,10 +14,12 @@
     
     def register(self, factory, module_info):
 
-        #print '\nname:', self.view_name,'context:', self.view_context,'factory:', factory,\
-        #      'layer:', self.view_layer, 'provides', self.provides, '\n'
+        view = util.class_annotation(factory, 'mars.viewlet.view',
+                       None) or IBrowserView
+#        print '\nname:', self.view_name,'context:', self.view_context,'factory:', factory,\
+#              'layer:', self.view_layer, 'provides', self.provides, 'view', view,  '\n'
         zope.component.provideAdapter(factory,
-                     adapts=(self.view_context, self.view_layer, IBrowserView),
+                     adapts=(self.view_context, self.view_layer, view),
                      provides=self.provides,
                      name=self.view_name)
 

Modified: Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/viewlet.txt
===================================================================
--- Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/viewlet.txt	2007-07-20 09:51:04 UTC (rev 78218)
+++ Sandbox/darrylcousins/mars.viewlet/src/mars/viewlet/viewlet.txt	2007-07-20 10:01:57 UTC (rev 78219)
@@ -20,6 +20,7 @@
   >>> import zope.interface
   >>> import zope.component
   >>> import grok
+  >>> import mars.view
   >>> import mars.viewlet
   >>> import mars.template
 
@@ -55,7 +56,7 @@
 handles the viewlets registered for it:
 
   >>> class MyManager(mars.viewlet.ViewletManager):
-  ...     pass
+  ...    pass
 
   >>> manager = MyManager(content, request, view)
 
@@ -115,7 +116,6 @@
 And we create the template itself for the viewlet.
 
   >>> class ViewTemplate(mars.template.TemplateFactory):
-  ...     """This is a template"""
   ...     grok.template(viewTemplate)
   ...     grok.context(SecondViewlet)
 
@@ -136,3 +136,68 @@
   <div>Second viewlet content</div>
   <div>First viewlet content</div>
 
+Tal Expression
+--------------
+
+Usually though we do not directly call on the manager but rather we insert the
+manager into a template using the ``provider`` expression. Here is a template
+file that does just that.
+
+  >>> layout = os.path.join(temp_dir, 'layout.pt')
+  >>> open(layout, 'w').write('''
+  ... <html>
+  ...  <body>
+  ...   <div tal:content="structure provider: mymanager">
+  ...     here render my manager
+  ...   </div>
+  ...  </body>
+  ... </html>
+  ... ''')
+
+We need a view and a template to use this template.
+
+  >>> class TestView(mars.view.LayoutView):
+  ...     grok.context(zope.interface.Interface)
+
+  >>> class ViewLayout(mars.template.LayoutFactory):
+  ...     grok.template(layout)
+  ...     grok.context(TestView)
+
+We need to manually ``grok`` these classes in the doctest. Usually this happens
+at start up.
+
+  >>> from mars.view.meta import LayoutViewGrokker
+  >>> LayoutViewGrokker().grok('', TestView, None, module_info, None)
+  True
+
+  >>> from mars.template.meta import LayoutFactoryGrokker
+  >>> LayoutFactoryGrokker().grok('', ViewLayout, None, module_info, None)
+  True
+
+We can now look up the view and expect the template to be rendered.
+
+  >>> testview = zope.component.getMultiAdapter((content, request),
+  ...                                       name='testview')
+  >>> print testview()
+  Traceback (most recent call last):
+  ...
+  ContentProviderLookupError:  mymanager
+
+OK. What happened here is that we have yet ``grokked`` the viewlet manager. Lets
+do that.
+
+  >>> from mars.viewlet.meta import ViewletManagerGrokker
+  >>> ViewletManagerGrokker().grok('', MyManager, zope.interface.Interface,
+  ...                               module_info, None)
+  True
+
+And we try the view again.
+
+  >>> from zope.contentprovider.interfaces import IContentProvider
+  >>> from zope.viewlet.interfaces import IViewletManager
+  >>> from zope.publisher.interfaces.browser import IBrowserView
+  >>> print zope.component.queryMultiAdapter((content, request, testview),
+  ...             IContentProvider, 'myanager')
+  <MyManager ...>
+  >>> print content, request, testview
+  >>> print testview()



More information about the Checkins mailing list