[Product-Developers] UnicodeDecodeError while rendering image from dexterity content type
Gilles Lenfant
gilles.lenfant at alterway.fr
Fri Jul 29 07:11:13 UTC 2011
Hi,
I noticed this in your excerpt of plone.namedfile.scalin:
> parts.extend("%s=%s" % (k, quoteattr(unicode(v))) for k, v in values if v is not None)
Have a look at the builtin "unicode".
http://docs.python.org/release/2.6.7/library/functions.html#unicode
Seems that this deserves a "encoding" parameter ("utf-8" ?).
Make the patch and file an issue ticket if this works.
Regards
--
Gilles Lenfant
Le 28 juil. 2011 à 18:42, Noe Nieto a écrit :
> Plone 4.1, Dexterity 1.0.1
> I have a Dexterity content-type with plone.app.content.interfaces.INameFromTitle and plone.app.dexterity.behaviors.metadata.IBasic behaviors:
> The schema is this:
>
> class IAuthor(form.Schema):
> """
> Profile for Book or DVD authors.
> """
>
> portrait = namedfile.NamedBlobImage(
> title=_(u"Author's Portrait/Photo"),
> description=_(u"Portrayal of the Author."),
> required=True,
> )
>
> form.widget(bio="plone.app.z3cform.wysiwyg.WysiwygFieldWidget")
> bio = schema.Text(
> title=_(u"Author's Bio"),
> description=_(u"The Author's Bio"),
> required=True,
> )
>
> The template is very basic:
>
> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
> xmlns:tal="http://xml.zope.org/namespaces/tal"
> xmlns:metal="http://xml.zope.org/namespaces/metal"
> xmlns:i18n="http://xml.zope.org/namespaces/i18n"
> lang="en"
> metal:use-macro="context/main_template/macros/master"
> i18n:domain="holokinesislibros.contenttypes">
> <body>
>
>
> <metal:main fill-slot="content-core">
> <metal:content-core define-macro="content-core">
>
> <div class="bio-portrait"
> tal:define="portrait nocall:context/portrait"
> tal:condition="nocall:portrait">
> <img tal:replace="structure context/@@images/portrait/mini" />
> </div>
>
> <div tal:content="structure context/bio" />
>
> </metal:content-core>
> </metal:main>
>
> </body>
> </html>
>
> If I add an author with non-ascii chars in the title, the template will throw a traceback:
>
> 2011-07-28 09:34:42 ERROR Zope.SiteErrorLog 1311870882.960.569752426632 http://localhost:8002/Plone/author-with-accents-aeion/view
> Traceback (innermost last):
> Module ZPublisher.Publish, line 126, in publish
> Module ZPublisher.mapply, line 77, in mapply
> Module ZPublisher.Publish, line 46, in call_object
> Module grokcore.view.components, line 100, in __call__
> Module grokcore.view.components, line 104, in _render_template
> Module five.grok.components, line 134, in render
> Module zope.pagetemplate.pagetemplate, line 113, in pt_render
> Module zope.tal.talinterpreter, line 271, in __call__
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 888, in do_useMacro
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 533, in do_optTag_tal
> Module zope.tal.talinterpreter, line 518, in do_optTag
> Module zope.tal.talinterpreter, line 513, in no_tag
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 954, in do_defineSlot
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 533, in do_optTag_tal
> Module zope.tal.talinterpreter, line 518, in do_optTag
> Module zope.tal.talinterpreter, line 513, in no_tag
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 858, in do_defineMacro
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 954, in do_defineSlot
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 533, in do_optTag_tal
> Module zope.tal.talinterpreter, line 518, in do_optTag
> Module zope.tal.talinterpreter, line 513, in no_tag
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 954, in do_defineSlot
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 533, in do_optTag_tal
> Module zope.tal.talinterpreter, line 518, in do_optTag
> Module zope.tal.talinterpreter, line 513, in no_tag
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 946, in do_defineSlot
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 533, in do_optTag_tal
> Module zope.tal.talinterpreter, line 518, in do_optTag
> Module zope.tal.talinterpreter, line 513, in no_tag
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 858, in do_defineMacro
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 533, in do_optTag_tal
> Module zope.tal.talinterpreter, line 518, in do_optTag
> Module zope.tal.talinterpreter, line 513, in no_tag
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 852, in do_condition
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 531, in do_optTag_tal
> Module zope.tal.talinterpreter, line 513, in no_tag
> Module zope.tal.talinterpreter, line 343, in interpret
> Module zope.tal.talinterpreter, line 742, in do_insertStructure_tal
> Module Products.PageTemplates.Expressions, line 218, in evaluateStructure
> Module zope.tales.tales, line 696, in evaluate
> - URL: /home/tzicatl/Aplicaciones/Codigo/pu/holokinesis_libros/src/holokinesislibros.contenttypes/holokinesislibros/contenttypes/templates/author.pt
> - Line 17, Column 13
> - Expression: <PathExpr standard:u'context/@@images/portrait/mini'>
> - Names:
> {'args': (),
> 'container': <Author at /Plone/author-with-accents-aeion>,
> 'context': <Author at /Plone/author-with-accents-aeion>,
> 'default': <object object at 0xb783b6b0>,
> 'here': <Author at /Plone/author-with-accents-aeion>,
> 'loop': {},
> 'nothing': None,
> 'options': {},
> 'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0xcb6289c>,
> 'request': <HTTPRequest, URL=http://localhost:8002/Plone/author-with-accents-aeion/view>,
> 'root': <Application at >,
> 'static': <five.grok.components.ZopeTwoDirectoryResource object at 0xb5309c0c>,
> 'template': <Products.Five.browser.pagetemplatefile.ViewPageTemplateFile object at 0xd329c8c>,
> 'traverse_subpath': [],
> 'user': <PropertiedUser 'admin'>,
> 'view': <holokinesislibros.contenttypes.author.View object at 0xb533848c>,
> 'views': <Products.Five.browser.pagetemplatefile.ViewMapper object at 0xb532348c>}
> Module zope.tales.expressions, line 217, in __call__
> Module Products.PageTemplates.Expressions, line 147, in _eval
> Module zope.tales.expressions, line 124, in _eval
> Module Products.PageTemplates.Expressions, line 97, in trustedBoboAwareZopeTraverse
> Module zope.traversing.adapters, line 136, in traversePathElement
> - __traceback_info__: (<Products.Five.metaclass.ImageScaling object at 0xb53306cc>, 'portrait')
> Module plone.namedfile.scaling, line 126, in traverse
> Module plone.namedfile.scaling, line 68, in tag
> Module plone.namedfile.scaling, line 68, in <genexpr>
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 20: ordinal not in range(128)
>
>
> This is the plone.namedfile.scaling.ImageScale::tag() function:
>
> def tag(self, height=_marker, width=_marker, alt=_marker,
> css_class=None, title=_marker, **kwargs):
> """Create a tag including scale
> """
> if height is _marker:
> height = getattr(self, 'height', self.data._height)
> if width is _marker:
> width = getattr(self, 'width', self.data._width)
>
> if alt is _marker:
> alt = self.context.Title()
> if title is _marker:
> title = self.context.Title()
>
> values = [
> ('src', self.url),
> ('alt', alt),
> ('title', title),
> ('height', height),
> ('width', width),
> ('class', css_class),
> ]
> values.extend(kwargs.items())
>
> parts = ['<img']
> parts.extend("%s=%s" % (k, quoteattr(unicode(v))) for k, v in values if v is not None)
> parts.append('/>')
>
> return u' '.join(parts)
>
> It takes the context's title and uses it for the alt and title attributes of the img tag. Is this a bug in plone.app.scaling or in my code?
>
>
> --
> ---
> Noe Nieto
> NNieto Consulting Services
> M: nnieto at noenieto.com
> W: http://noenieto.com
> T: @tzicatl
> Li: Perfil en LinkedIn
>
> _______________________________________________
> Product-Developers mailing list
> Product-Developers at lists.plone.org
> https://lists.plone.org/mailman/listinfo/plone-product-developers
More information about the Product-Developers
mailing list