[Checkins] SVN: Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/ Added the suggestion from trollfot for component and use the check from zope.pagetemplatefile for checking if the template exists

Christian Klinger cklinger at novareto.de
Fri Mar 20 04:28:48 EDT 2009


Log message for revision 98284:
  Added the suggestion from trollfot for component and use the check from zope.pagetemplatefile for checking if the template exists

Changed:
  U   Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/component.py
  U   Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/meta.py
  U   Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/tests/test_layout.py
  U   Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/tests/test_pagelet.py

-=-
Modified: Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/component.py
===================================================================
--- Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/component.py	2009-03-20 07:55:13 UTC (rev 98283)
+++ Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/component.py	2009-03-20 08:28:48 UTC (rev 98284)
@@ -1,26 +1,17 @@
-import martian.util
-import grokcore.component 
-
-from zope import interface
-from zope import component
-from grok import Application
-from grokcore.view import View, util
-from grok.interfaces import IGrokView 
-from martian.error import GrokImportError
-from zope.interface import implements
-from zope.component import getMultiAdapter
-from zope.publisher.browser import BrowserPage
+import grok
+from zope.component import queryMultiAdapter
 from z3c.template.interfaces import ILayoutTemplate
-from grokcore.view.interfaces import IGrokView
-import grok
+from zope.publisher.publish import mapply
 
 
 class Layout(object):
     """ A basic class for Layouts"""
     pass
 
+
 class Pagelet(grok.View):
-    """ This is the BaseClass for the Pagelets"""
+    """This is the BaseClass for view Pagelets
+    """
     grok.baseclass()
     layout = None
 
@@ -33,8 +24,39 @@
         """Calls update and returns the layout template which calls render."""
         self.update()
         if self.layout is None:
-            layout = component.getMultiAdapter(
+            layout = queryMultiAdapter(
                 (self.context, self.request), ILayoutTemplate)
+            if layout is None:
+                raise NotImplementedError(
+                    """Impossible to find a suitable layout for %r.
+                    This is an unimplemented siutation. Please, provide
+                    a useable layout or check your components.""" % self
+                    )
             return layout(self)
         return self.layout()
 
+
+class FormPageletMixin(object):
+    """This is the BaseClass for form Pagelets
+    """
+    layout = None
+
+    def __call__(self):
+        """Calls update and returns the layout template which calls render.
+        """
+        mapply(self.update, (), self.request)
+        if self.request.response.getStatus() in (302, 303):
+            return
+
+        self.update_form()
+        if self.layout is None:
+            layout = queryMultiAdapter(
+                (self.context, self.request), ILayoutTemplate)
+            if layout is None:
+                raise NotImplementedError(
+                    """Impossible to find a suitable layout for %r.
+                    This is an unimplemented siutation. Please, provide
+                    a useable layout or check your components.""" % self
+                    )
+            return layout(self)
+        return self.layout()

Modified: Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/meta.py
===================================================================
--- Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/meta.py	2009-03-20 07:55:13 UTC (rev 98283)
+++ Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/meta.py	2009-03-20 08:28:48 UTC (rev 98284)
@@ -52,10 +52,13 @@
 	module_info = factory.module_info
 	path = module_info.getResourcePath('')
 	template = "%s%s" %(path, template)
-	if not os.path.isfile(template):
-	    raise GrokError("The Template %s is not found in module %s.py" 
+        # Ok i use now the check in the zope.pagetemplatefile package.
+        # I think this need some imporovement.
+	try:
+            layoutfactory = TemplateFactory(template, 'text/html')
+	except ValueError, e:
+	    raise GrokError("The Template %s is not found in module %s"
 	                     %(template, module_info.getModule()), module_info.getModule())
-        layoutfactory = TemplateFactory(template, 'text/html')
         config.action(
             discriminator = ('layoutTemplate', context, layer, name),
             callable = component.provideAdapter,

Modified: Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/tests/test_layout.py
===================================================================
--- Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/tests/test_layout.py	2009-03-20 07:55:13 UTC (rev 98283)
+++ Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/tests/test_layout.py	2009-03-20 08:28:48 UTC (rev 98284)
@@ -66,9 +66,9 @@
     grok.context(Mammoth)
     megrok.pagelet.template('templates/context_layout.pt')
 
-#class NoTemplateLayout(megrok.pagelet.Layout):
-#    grok.context(Mammoth)
-#    megrok.pagelet.template('template/no_template.pt')
+class NoTemplateLayout(megrok.pagelet.Layout):
+    grok.context(Mammoth)
+    megrok.pagelet.template('template/no_template.pt')
 
 
 def test_suite():

Modified: Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/tests/test_pagelet.py
===================================================================
--- Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/tests/test_pagelet.py	2009-03-20 07:55:13 UTC (rev 98283)
+++ Sandbox/cklinger/megrok.pagelet/trunk/src/megrok/pagelet/tests/test_pagelet.py	2009-03-20 08:28:48 UTC (rev 98284)
@@ -24,7 +24,7 @@
    >>> view()
    Traceback (most recent call last):
    ...
-   ComponentLookupError: ...
+   NotImplementedError: ...
 
 Now I want to see a Pagelet with a template in xxx_templates/xxx.pt
 



More information about the Checkins mailing list