diff --git a/.coveragerc b/.coveragerc index bbbd7b21..38cba224 100644 --- a/.coveragerc +++ b/.coveragerc @@ -2,8 +2,10 @@ omit = /home/*/.buildout/eggs/* /usr/* - bin/test + bin/* /home/travis/buildout-cache/eggs/* /home/travis/virtualenv/* eggs/* parts/* + lib* + include diff --git a/.gitignore b/.gitignore index 78e950fa..ce435053 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ bin develop-eggs parts build +/include +/lib* +pip-selfcheck.json diff --git a/.travis.yml b/.travis.yml index 8ae56a26..e7f67899 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,20 +6,16 @@ env: cache: pip: true directories: - - $HOME/buildout-cache + - $HOME/eggs matrix: fast_finish: true before_install: - - mkdir -p $HOME/buildout-cache/{eggs,downloads} - - mkdir $HOME/.buildout - - echo "[buildout]" > $HOME/.buildout/default.cfg - - echo "download-cache = $HOME/buildout-cache/downloads" >> $HOME/.buildout/default.cfg - - echo "eggs-directory = $HOME/buildout-cache/eggs" >> $HOME/.buildout/default.cfg - - pip install zc.buildout + - virtualenv . + - bin/pip install --upgrade zc.buildout==2.8.0 setuptools==34.1.1 - cp test-$PLONE_VERSION.cfg buildout.cfg install: - - buildout -N -t 3 annotate - - buildout -N -t 3 + - bin/buildout -N -t 3 annotate + - bin/buildout -N -t 3 script: - bin/code-analysis - bin/test diff --git a/CHANGES.rst b/CHANGES.rst index 228efd4a..5db11346 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,7 +4,9 @@ Changelog 2.1.1 (unreleased) ------------------ -- Nothing changed yet. +Bug fixes: +- Fix non ASCII HTML tile content + [tomgross] 2.1.0 (2017-02-24) diff --git a/plone/app/standardtiles/html.py b/plone/app/standardtiles/html.py index a469579b..0bf6a1e3 100644 --- a/plone/app/standardtiles/html.py +++ b/plone/app/standardtiles/html.py @@ -6,6 +6,7 @@ from plone.tiles import Tile from plone.tiles.directives import ignore_querystring from Products.CMFCore.utils import getToolByName +from Products.CMFPlone.utils import safe_unicode from zope import schema @@ -37,4 +38,4 @@ def __call__(self): content = data.getData() else: content = u'

' - return u"%s" % content + return u"%s" % safe_unicode(content) diff --git a/plone/app/standardtiles/tests/test_media.py b/plone/app/standardtiles/tests/test_media.py index f0960923..4d00b4b2 100644 --- a/plone/app/standardtiles/tests/test_media.py +++ b/plone/app/standardtiles/tests/test_media.py @@ -4,6 +4,7 @@ from PIL import Image from PIL import ImageDraw from plone.app.standardtiles.embed import NOEMBED_ENDPOINT +from plone.app.standardtiles.html import HTMLTile from plone.app.standardtiles.testing import PASTANDARDTILES_FUNCTIONAL_TESTING from plone.app.testing import setRoles from plone.app.testing import TEST_USER_ID @@ -333,3 +334,11 @@ def test_rawhtml_tile(self): root = fromstring(self.browser.contents) nodes = root.xpath('//body/p') self.assertEqual(nodes[0].text, 'Hello World!') + + def test_rawhtml_tile_utf8(self): + tile = HTMLTile(self.portal, self.layer['request']) + tile.data['content'] = u'

Hello Wörld!

'.encode('utf-8') + self.assertEqual( + tile(), + u'

Hello Wörld!

' + )