[Zope-Checkins] SVN: Zope/trunk/ Added LAZY_FILE_LOADING constant
to PageTemplateFile. When set to True Page Template files aren't lo
Hanno Schlichting
plone at hannosch.info
Tue Oct 16 17:16:08 EDT 2007
Log message for revision 80896:
Added LAZY_FILE_LOADING constant to PageTemplateFile. When set to True Page Template files aren't lo
aded and parsed on Zope startup anymore, but on first access instead. When complex add-ons like Plon
e are installed this can safe up to 30% of the Zope startup time. This gets a ZConfig switch ones I
figured out how to write one ;)
Changed:
U Zope/trunk/doc/CHANGES.txt
U Zope/trunk/lib/python/Products/PageTemplates/PageTemplateFile.py
U Zope/trunk/lib/python/Products/PageTemplates/tests/test_ptfile.py
-=-
Modified: Zope/trunk/doc/CHANGES.txt
===================================================================
--- Zope/trunk/doc/CHANGES.txt 2007-10-16 20:12:30 UTC (rev 80895)
+++ Zope/trunk/doc/CHANGES.txt 2007-10-16 21:16:07 UTC (rev 80896)
@@ -71,6 +71,10 @@
Features added
+ - Added LAZY_FILE_LOADING constant to PageTemplateFile. When set to True
+ Page Template files aren't lo aded and parsed on Zope startup anymore,
+ but on first access instead.
+
- Testing.ZopeTestCase: Introduced a "ZopeLite" test layer, making it
possible to mix ZTC and non-ZTC tests much more freely.
Modified: Zope/trunk/lib/python/Products/PageTemplates/PageTemplateFile.py
===================================================================
--- Zope/trunk/lib/python/Products/PageTemplates/PageTemplateFile.py 2007-10-16 20:12:30 UTC (rev 80895)
+++ Zope/trunk/lib/python/Products/PageTemplates/PageTemplateFile.py 2007-10-16 21:16:07 UTC (rev 80896)
@@ -31,6 +31,8 @@
LOG = getLogger('PageTemplateFile')
+LAZY_FILE_LOADING = False
+
def guess_type(filename, text):
# check for XML ourself since guess_content_type can't
@@ -86,8 +88,9 @@
self.filename = filename
- content = open(filename).read()
- self.pt_edit( content, guess_type(filename, content))
+ if not LAZY_FILE_LOADING:
+ content = open(filename).read()
+ self.pt_edit( content, guess_type(filename, content))
def pt_getContext(self):
root = self.getPhysicalRoot()
Modified: Zope/trunk/lib/python/Products/PageTemplates/tests/test_ptfile.py
===================================================================
--- Zope/trunk/lib/python/Products/PageTemplates/tests/test_ptfile.py 2007-10-16 20:12:30 UTC (rev 80895)
+++ Zope/trunk/lib/python/Products/PageTemplates/tests/test_ptfile.py 2007-10-16 21:16:07 UTC (rev 80896)
@@ -8,6 +8,7 @@
from Testing.makerequest import makerequest
+from Products.PageTemplates import PageTemplateFile as PTF
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
@@ -192,10 +193,42 @@
def test_mac(self):
self.assertEqual(self.runPTWithLineEndings('\r'), self.OUTPUT)
+
+class LazyLoadingTestCase(unittest.TestCase):
+
+ TEMPFILENAME = tempfile.mktemp(".zpt")
+ OLD_LAZY = None
+
+ def setUp(self):
+ self.OLD_LAZY = PTF.LAZY_FILE_LOADING
+
+ def tearDown(self):
+ if os.path.exists(self.TEMPFILENAME):
+ os.unlink(self.TEMPFILENAME)
+ PTF.LAZY_FILE_LOADING = self.OLD_LAZY
+
+ def test_not_lazy(self):
+ f = open(self.TEMPFILENAME, 'w')
+ print >> f, 'Lazyness'
+ f.close()
+ pt = PageTemplateFile(self.TEMPFILENAME)
+ self.failUnless(pt._text.startswith('Lazyness'))
+ self.failUnless(pt._v_program)
+
+ def test_lazy(self):
+ f = open(self.TEMPFILENAME, 'w')
+ print >> f, 'Lazyness'
+ f.close()
+ PTF.LAZY_FILE_LOADING = True
+ pt = PageTemplateFile(self.TEMPFILENAME)
+ self.failUnless(not pt._text and not pt._v_program)
+
+
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(TypeSniffingTestCase),
unittest.makeSuite(LineEndingsTestCase),
+ unittest.makeSuite(LazyLoadingTestCase),
))
if __name__ == "__main__":
More information about the Zope-Checkins
mailing list