Commit ec9e4b1f authored by Paul Winkler's avatar Paul Winkler

merged Zope/branches/slinkp-collector_596 25096:28418

I thought I had merged this before but clearly not :-(
Also fixed a deprecation warning in testZopePageTemplate.py.
parents 1781bccc 66878f3c
...@@ -21,3 +21,7 @@ Page Template changes ...@@ -21,3 +21,7 @@ Page Template changes
- The starting properties could be deleted. This is only - The starting properties could be deleted. This is only
fixed for new templates. fixed for new templates.
- Collector 596 fixed; manage_addPageTemplate can now be
called with a text argument but no REQUEST.form['file'].
E.g. when called via ZPublisher.Client.
...@@ -352,12 +352,17 @@ def manage_addPageTemplate(self, id, title=None, text=None, ...@@ -352,12 +352,17 @@ def manage_addPageTemplate(self, id, title=None, text=None,
file = REQUEST.form.get('file') file = REQUEST.form.get('file')
headers = getattr(file, 'headers', None) headers = getattr(file, 'headers', None)
if headers is None or not file.filename: if headers is None or not file.filename:
zpt = ZopePageTemplate(id) zpt = ZopePageTemplate(id, text) # collector 596
else: else:
zpt = ZopePageTemplate(id, file, headers.get('content_type')) zpt = ZopePageTemplate(id, file, headers.get('content_type'))
self._setObject(id, zpt) self._setObject(id, zpt)
# collector 596
if title:
ob = getattr(self, id)
ob.pt_setTitle(title)
try: try:
u = self.DestinationURL() u = self.DestinationURL()
except AttributeError: except AttributeError:
......
"""ZopePageTemplate regression tests.
Ensures that adding a page template works correctly.
Note: Tests require Zope >= 2.7
"""
import unittest
import Zope
import transaction
from Testing.makerequest import makerequest
class ZPTRegressions(unittest.TestCase):
def setUp(self):
transaction.begin()
self.app = makerequest(Zope.app())
f = self.app.manage_addProduct['PageTemplates'].manage_addPageTemplate
self._addPT = f
self.title = 'title of page template'
self.text = 'text of page template'
def tearDown(self):
get_transaction().abort()
self.app._p_jar.close()
def testAddWithParams(self):
pt = self._addPT('pt1', title=self.title, text=self.text)
self.assertEqual(pt.title, self.title)
self.assertEqual(pt.document_src(), self.text)
def testAddWithoutParams(self):
pt = self._addPT('pt1')
default_text = open(pt._default_content_fn).read()
self.assertEqual(pt.title, '')
self.assertEqual(pt.document_src(), default_text)
def testAddWithRequest(self):
"""Test manage_add with file"""
request = self.app.REQUEST
request.form['file'] = DummyFileUpload(filename='some file',
data=self.text,
content_type='text/html')
self._addPT('pt1', REQUEST=request)
# no object is returned when REQUEST is passed.
pt = self.app.pt1
self.assertEqual(pt.document_src(), self.text)
def testAddWithRequestButNoFile(self):
"""Collector #596: manage_add with text but no file"""
request = self.app.REQUEST
self._addPT('pt1', text=self.text, REQUEST=request)
# no object is returned when REQUEST is passed.
pt = self.app.pt1
self.assertEqual(pt.document_src(), self.text)
class DummyFileUpload:
def __init__(self, data='', filename='', content_type=''):
self.data = data
self.filename = filename
self.headers = {'content_type': content_type}
def read(self):
return self.data
def test_suite():
return unittest.makeSuite(ZPTRegressions)
if __name__ == '__main__':
unittest.main(defaultTest='test_suite')
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment