[Checkins] SVN: grok/branches/regebro-guido-templates/ Made the
view slightly more template agnostic (still some more to do)
and got useful
Lennart Regebro
regebro at gmail.com
Tue Oct 2 11:24:39 EDT 2007
Log message for revision 80502:
Made the view slightly more template agnostic (still some more to do) and got useful
error messages for genshi attribute errors.
Changed:
U grok/branches/regebro-guido-templates/grokwiki/src/grokwiki/page.py
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/applications.pt
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokclassview.pt
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokgrokapplicationview.pt
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokinterfaceview.pt
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokmoduleview.pt
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokpackageview.pt
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgroktextfileview.pt
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokview.pt
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/index.pt
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/inspect.pt
U grok/branches/regebro-guido-templates/src/grok/admin/view_templates/server.pt
U grok/branches/regebro-guido-templates/src/grok/components.py
U grok/branches/regebro-guido-templates/src/grok/ftests/admin/macros.py
U grok/branches/regebro-guido-templates/src/grok/meta.py
A grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate.py
A grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate_templates/
A grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate_templates/cavepainting.gmt
A grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate_templates/food.gmt
-=-
Modified: grok/branches/regebro-guido-templates/grokwiki/src/grokwiki/page.py
===================================================================
--- grok/branches/regebro-guido-templates/grokwiki/src/grokwiki/page.py 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/grokwiki/src/grokwiki/page.py 2007-10-02 15:24:38 UTC (rev 80502)
@@ -57,3 +57,6 @@
self.context.update(text)
self.flash('Saved.')
self.redirect(self.url(self.context))
+
+class Food(grok.View):
+ pass
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/applications.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/applications.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/applications.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="context/@@grokadminmacros/gaia-page">
+<html metal:use-macro="context/@@grokadminmacros/macros/gaia-page">
<div metal:fill-slot="content">
<form tal:define="apps context/values"
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokclassview.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokclassview.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokclassview.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="view/app_root/@@grokadminmacros/gaia-page">
+<html metal:use-macro="view/app_root/@@grokadminmacros/macros/gaia-page">
<head>
<title>DocGrok page title</title>
</head>
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokgrokapplicationview.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokgrokapplicationview.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokgrokapplicationview.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="view/app_root/@@grokadminmacros/gaia-page">
+<html metal:use-macro="view/app_root/@@grokadminmacros/macros/gaia-page">
<head>
<title>DocGrok page title</title>
</head>
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokinterfaceview.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokinterfaceview.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokinterfaceview.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="view/app_root/@@grokadminmacros/gaia-page">
+<html metal:use-macro="view/app_root/@@grokadminmacros/macros/gaia-page">
<head>
<title>DocGrok page title</title>
</head>
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokmoduleview.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokmoduleview.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokmoduleview.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="view/app_root/@@grokadminmacros/gaia-page">
+<html metal:use-macro="view/app_root/@@grokadminmacros/macros/gaia-page">
<head>
<title>DocGrok page title</title>
</head>
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokpackageview.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokpackageview.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokpackageview.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="view/app_root/@@grokadminmacros/gaia-page">
+<html metal:use-macro="view/app_root/@@grokadminmacros/macros/gaia-page">
<head>
<title>DocGrokPackage page title</title>
</head>
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgroktextfileview.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgroktextfileview.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgroktextfileview.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="view/app_root/@@grokadminmacros/gaia-page">
+<html metal:use-macro="view/app_root/@@grokadminmacros/macros/gaia-page">
<head>
<title>DocGrok page title</title>
</head>
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokview.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokview.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/docgrokview.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="view/app_root/@@grokadminmacros/gaia-page">
+<html metal:use-macro="view/app_root/@@grokadminmacros/macros/gaia-page">
<head>
<title>DocGrok page title</title>
</head>
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/index.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/index.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/index.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="context/@@grokadminmacros/gaia-page">
+<html metal:use-macro="context/@@grokadminmacros/macros/gaia-page">
<div metal:fill-slot="content">
<h1></h1>
<div class="logo">
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/inspect.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/inspect.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/inspect.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="context/@@grokadminmacros/gaia-page">
+<html metal:use-macro="context/@@grokadminmacros/macros/gaia-page">
<div metal:fill-slot="content">
<h1>
<span tal:content="view/info/name" />
Modified: grok/branches/regebro-guido-templates/src/grok/admin/view_templates/server.pt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/admin/view_templates/server.pt 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/admin/view_templates/server.pt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -1,4 +1,4 @@
-<html metal:use-macro="context/@@grokadminmacros/gaia-page">
+<html metal:use-macro="context/@@grokadminmacros/macros/gaia-page">
<div metal:fill-slot="content">
<h1>Manage your Zope 3 instance</h1>
Modified: grok/branches/regebro-guido-templates/src/grok/components.py
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/components.py 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/components.py 2007-10-02 15:24:38 UTC (rev 80502)
@@ -20,6 +20,7 @@
import warnings
import pytz
import simplejson
+import genshi.template
from zope import component
from zope import interface
@@ -131,9 +132,16 @@
return self.template.pt_render(namespace)
def __getitem__(self, key):
- # XXX give nice error message if template is None
+ if getattr(self.template, 'macros', None) is None:
+ raise AttributeError("View has no item %s" % key)
+ # When this deprecation is done with, this whole __getitem__ can
+ # be removed.
+ warnings.warn("Calling macros directly on the view is deprecated. "
+ "Please use view/@@viewname/macros/macroname\n"
+ "View %r, macro %s" % (self, key),
+ DeprecationWarning)
return self.template.macros[key]
-
+
def url(self, obj=None, name=None):
# if the first argument is a string, that's the name. There should
# be no second argument
@@ -216,6 +224,8 @@
# PageTemplate cannot be subclassed
self.__grok_module__ = martian.util.caller_module()
+ def _factory_init(self, factory):
+ factory.macros = self.macros
class PageTemplateFile(GrokPageTemplate, TrustedAppPT,
pagetemplatefile.PageTemplateFile):
@@ -232,9 +242,9 @@
# PageTemplateFile cannot be subclassed
self.__grok_module__ = martian.util.caller_module()
+ def _factory_init(self, factory):
+ factory.macros = self.macros
-import genshi.template
-
class GenshiMarkupTemplate(GrokPageTemplate):
interface.implements(interfaces.ITemplateFile)
@@ -255,6 +265,9 @@
stream = self._template.generate(**namespace)
return stream.render('xhtml')
+ def _factory_init(self, factory):
+ pass
+
# XXX Ugly temporary ZPT emulation
def pt_getContext(self):
return {}
Modified: grok/branches/regebro-guido-templates/src/grok/ftests/admin/macros.py
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/ftests/admin/macros.py 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/ftests/admin/macros.py 2007-10-02 15:24:38 UTC (rev 80502)
@@ -62,7 +62,7 @@
grok.context(Mammoth)
externalview = grok.PageTemplate("""\
-<html metal:use-macro="context/@@grokadminmacros/gaia-page">
+<html metal:use-macro="context/@@grokadminmacros/macros/gaia-page">
</html>
""")
Modified: grok/branches/regebro-guido-templates/src/grok/meta.py
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/meta.py 2007-10-02 14:55:28 UTC (rev 80501)
+++ grok/branches/regebro-guido-templates/src/grok/meta.py 2007-10-02 15:24:38 UTC (rev 80502)
@@ -169,6 +169,7 @@
templates.markAssociated(template_name)
factory.template = template
+ template._factory_init(factory)
else:
if not getattr(factory, 'render', None):
# we do not accept a view without any way to render it
@@ -202,7 +203,10 @@
% (method.__name__, factory), factory)
return True
+def view__getitem__(self, key):
+ return self.template.macros[key]
+
class JSONGrokker(martian.ClassGrokker):
component_class = grok.JSON
Added: grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate.py
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate.py (rev 0)
+++ grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate.py 2007-10-02 15:24:38 UTC (rev 80502)
@@ -0,0 +1,38 @@
+"""
+Templates can also be found in a directory with the same name as the module:
+
+ >>> grok.grok(__name__)
+
+ >>> manfred = Mammoth()
+ >>> from zope.publisher.browser import TestRequest
+ >>> request = TestRequest()
+ >>> from zope import component
+ >>> view = component.getMultiAdapter((manfred, request), name='cavepainting')
+ >>> print view()
+ <html>
+ <body>
+ A cave painting.
+ </body>
+ </html>
+
+ >>> view = component.getMultiAdapter((manfred, request), name='food')
+ >>> print view()
+ <html>
+ <body>
+ ME GROK EAT MAMMOTH!
+ </body>
+ </html>
+
+"""
+import grok
+
+class Mammoth(grok.Model):
+ pass
+
+class CavePainting(grok.View):
+ pass
+
+class Food(grok.View):
+
+ def me_do(self):
+ return "ME GROK EAT MAMMOTH!"
Property changes on: grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate_templates/cavepainting.gmt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate_templates/cavepainting.gmt (rev 0)
+++ grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate_templates/cavepainting.gmt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -0,0 +1,5 @@
+<html>
+<body>
+A cave painting.
+</body>
+</html>
Added: grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate_templates/food.gmt
===================================================================
--- grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate_templates/food.gmt (rev 0)
+++ grok/branches/regebro-guido-templates/src/grok/tests/view/genshitemplate_templates/food.gmt 2007-10-02 15:24:38 UTC (rev 80502)
@@ -0,0 +1,5 @@
+<html>
+<body>
+${view.me_do()}
+</body>
+</html>
More information about the Checkins
mailing list