[Checkins] SVN: grokcore.view/trunk/ Page template reloading now also works for macros. Fixes
Reinout van Rees
reinout at vanrees.org
Wed Apr 8 05:12:30 EDT 2009
Log message for revision 99003:
Page template reloading now also works for macros. Fixes
https://bugs.launchpad.net/grok/+bug/162261.
Changed:
U grokcore.view/trunk/CHANGES.txt
U grokcore.view/trunk/src/grokcore/view/components.py
U grokcore.view/trunk/src/grokcore/view/ftests/view/macros.py
A grokcore.view/trunk/src/grokcore/view/ftests/view/macros_templates/
A grokcore.view/trunk/src/grokcore/view/ftests/view/macros_templates/layout.pt
-=-
Modified: grokcore.view/trunk/CHANGES.txt
===================================================================
--- grokcore.view/trunk/CHANGES.txt 2009-04-08 08:08:00 UTC (rev 99002)
+++ grokcore.view/trunk/CHANGES.txt 2009-04-08 09:12:30 UTC (rev 99003)
@@ -4,6 +4,9 @@
1.4 (unreleased)
----------------
+* Page template reloading now also works for macros. Fixes
+ https://bugs.launchpad.net/grok/+bug/162261.
+
* Use zope.container instead of zope.app.container.
* Ignore '<tpl>.cache' files when looking up template files in a
Modified: grokcore.view/trunk/src/grokcore/view/components.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/components.py 2009-04-08 08:08:00 UTC (rev 99002)
+++ grokcore.view/trunk/src/grokcore/view/components.py 2009-04-08 09:12:30 UTC (rev 99003)
@@ -210,7 +210,12 @@
self._template = TrustedFilePageTemplate(filename, _prefix)
def _initFactory(self, factory):
- factory.macros = self._template.macros
+ def _get_macros(self):
+ return self.template._template.macros
+ # _template.macros is a property that does template reloading in debug
+ # mode. A direct "factory.macros = macros" basically caches the
+ # template. So we use a property.
+ factory.macros = property(_get_macros)
def render(self, view):
namespace = self.getNamespace(view)
Modified: grokcore.view/trunk/src/grokcore/view/ftests/view/macros.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/ftests/view/macros.py 2009-04-08 08:08:00 UTC (rev 99002)
+++ grokcore.view/trunk/src/grokcore/view/ftests/view/macros.py 2009-04-08 09:12:30 UTC (rev 99003)
@@ -44,6 +44,34 @@
>>> warnings.warn = saved_warn
+Filesystem-based templates, once grokked, can be changed. The change will
+automatically be picked up, reloading Zope is not necessary. (Generic reload
+tests are in ``grokcore/view/tests/view/templatereload.py``) Reload also
+applies to macros::
+
+ >>> import os.path
+ >>> here = os.path.dirname(__file__)
+ >>> template_file = os.path.join(here, 'macros_templates', 'layout.pt')
+ >>> before = open(template_file, 'r').read()
+ >>> changed = before.replace('GROK', 'GROK RELOADED')
+ >>> open(template_file, 'w').write(changed)
+ >>> browser.open("http://localhost/manfred/@@painting")
+ >>> print browser.contents
+ <html>
+ <body>
+ <h1>GROK RELOADED MACRO!</h1>
+ <div>
+ GROK SLOT!
+ </div>
+ </body>
+ </html>
+
+Restore situation::
+
+ >>> open(template_file, 'w').write(before)
+
+
+
"""
import grokcore.view as grok
@@ -72,17 +100,10 @@
""")
class Layout(grok.View):
+ # Layout template is in macros_templates/layout.pt for reload test
+ # purposes.
pass
-layout = grok.PageTemplate("""\
-<html metal:define-macro="main">
-<body>
-<h1>GROK MACRO!</h1>
-<div metal:define-slot="slot">
-</div>
-</body>
-</html>""")
-
class Dancing(grok.View):
pass
Added: grokcore.view/trunk/src/grokcore/view/ftests/view/macros_templates/layout.pt
===================================================================
--- grokcore.view/trunk/src/grokcore/view/ftests/view/macros_templates/layout.pt (rev 0)
+++ grokcore.view/trunk/src/grokcore/view/ftests/view/macros_templates/layout.pt 2009-04-08 09:12:30 UTC (rev 99003)
@@ -0,0 +1,7 @@
+<html metal:define-macro="main">
+<body>
+<h1>GROK MACRO!</h1>
+<div metal:define-slot="slot">
+</div>
+</body>
+</html>
\ No newline at end of file
Property changes on: grokcore.view/trunk/src/grokcore/view/ftests/view/macros_templates/layout.pt
___________________________________________________________________
Added: svn:eol-style
+ native
More information about the Checkins
mailing list