[Zope3-Users] why does HTTPResponse insist on a text mime type for unicode?

Stefan Rank stefan.rank at ofai.at
Thu Jun 29 10:34:19 EDT 2006


Hi,

I am trying to make my content object IExternallyEditable, and I ran up
against the following code in
zope.publisher.http.HTTPResult._implicitResult (line 849ff)::

     if isinstance(body, unicode):
         try:
             if not content_type.startswith('text/'):
                 raise ValueError(
                     'Unicode results must have a text content type,'
                     'got %s.' % content_type)
         except AttributeError:
                 raise ValueError(
                     'Unicode results must have a text content type.')

(note: the first raise originally did not give the feedback about the
received content type.)

And my question is: Why? (do unicode results need to have a text/* type)

The traceback I get in the ErrorReportingUtility is::

   Traceback (most recent call last):
     Module zope.publisher.publish, line 136, in publish
       response.setResult(result)
     Module zope.publisher.http, line 811, in setResult
       body, headers = self._implicitResult(result)
     Module zope.publisher.browser, line 686, in _implicitResult
       body, headers = super(BrowserResponse, self)._implicitResult(body)
     Module zope.publisher.http, line 851, in _implicitResult
       raise ValueError(
   ValueError: Unicode results must have a text content type,got
application/x-zope-edit.

The reason AFAICT is that my content object just stores its source as
unicode object and simply provides that in its IReadFile adapter.
This turns the whole response/result in the ExternalEditor browser view
into a unicode object,
and finally the httpresult refuses to deal with it.

One workaround I see is to (utf8-)encode the data in my IReadFile adapter.

But for a text/* content type the httpresult would nicely determine a
charset from the request parameters (and using IUserPreferredCharsets).
I would like to just use that.

Am I missing something?

cheers,
stefan




More information about the Zope3-users mailing list