[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