On 7/28/11 9:42 AM, Noe Nieto wrote:
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<http://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?
It was a bug in plone.namedfile (it's that "unicode(v)" without specifying 
which encoding to use). I just released version 1.0.4 of plone.namedfile which should fix 
the problem.

Sorry for the long delay in responding; I was on vacation.
David



David Glick
Web Developer
[email protected]
206.286.1235x32


[http://gw-logo.s3.amazonaws.com/groundwire-logo-270-noclear.png]<http://groundwire.org/?utm_source=Groundwire.org%2BEmail&utm_medium=Email&utm_campaign=Logo>


Online tools and strategies for the environmental movement. Sign up for Groundwire 
News!<http://www.groundwire.org/email-capture>


_______________________________________________
Product-Developers mailing list
[email protected]
https://lists.plone.org/mailman/listinfo/plone-product-developers

Reply via email to