Modify

Opened 10 months ago

Last modified 10 months ago

#11388 new defect

TypeError: decoding Unicode is not supported

Reported by: matheusslima@… Owned by: coderanger
Priority: normal Component: TracForgePlugin
Severity: normal Keywords:
Cc: Trac Release:

Description

How to Reproduce

While doing a GET operation on /projects/analistas/browser/Baselines,
Trac issued an internal error.

I'm trying to migrate some TRAC projects from a old 0.12dev-r7634
to a new 0.12.5 installation

Request parameters:

{}

User agent: `Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:18.0) Gecko/20100101
Firefox/18.0`

System Information

TRAC 0.12.5

Enabled Plugins

TracForgePlugin

Python Traceback

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/trac/web/main.py", line 522, in
_dispatch_request
    dispatcher.dispatch(req)
  File "/usr/lib/python2.7/dist-packages/trac/web/main.py", line 199, in
dispatch
    if handler.match_request(req):
  File "/usr/local/lib/python2.7/dist-
packages/TracForge-1.1-py2.7.egg/tracforge/admin/dispatch.py", line 117,
in match_request
    self._send_project(req, path_info)
  File "/usr/local/lib/python2.7/dist-
packages/TracForge-1.1-py2.7.egg/tracforge/admin/dispatch.py", line 196,
in _send_project
    req._response = dispatch_request(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/trac/web/main.py", line 490, in
dispatch_request
    return _dispatch_request(req, env, env_error)
  File "/usr/lib/python2.7/dist-packages/trac/web/main.py", line 566, in
_dispatch_request
    send_internal_error(env, req, sys.exc_info())
  File "/usr/lib/python2.7/dist-packages/trac/web/main.py", line 645, in
send_internal_error
    description_en = get_description(lambda s, **kw: safefmt(s, kw))
  File "/usr/lib/python2.7/dist-packages/trac/web/main.py", line 640, in
get_description
    method=req.method, path_info=req.path_info,
  File "/usr/lib/python2.7/dist-packages/trac/web/api.py", line 250, in
path_info
    return unicode(path_info, 'utf-8')
TypeError: decoding Unicode is not supported

Attachments (0)

Change History (3)

comment:1 Changed 10 months ago by anonymous

comment:3 Changed 10 months ago by matheusslima@…

i have made the following changes on "/usr/lib/python2.7/dist-packages/trac/web/api.py" and now works:

    @property
    def path_info(self):
        """Path inside the application"""
        path_info = self.environ.get('PATH_INFO', '')
        try:
            return unicode(path_info, 'utf-8')
#        except UnicodeDecodeError:
#            raise HTTPNotFound(_("Invalid URL encoding (was %(path_info)r)",
#                                 path_info=path_info))
        except (TypeError, UnicodeDecodeError):
                return path_info

    @property

comment:4 Changed 10 months ago by jun66j5

No, that is a TracForgePlugin issue, not a Trac issue.

The issue is probably caused by changing environ['PATH_INFO'] to unicode instance.

  • branches/bewst/0.11-clearsilver/tracforge/admin/dispatch.py

     
    164164                return self.start_response(*args) 
    165165 
    166166        environ['SCRIPT_NAME'] = req.href.projects('/') 
    167         environ['PATH_INFO'] = path_info 
     167        environ['PATH_INFO'] = path_info.encode('utf-8') 
    168168        environ['trac.env_parent_dir'] = os.path.dirname(self.env.path) 
    169169        if 'TRAC_ENV' in environ: 
    170170            del environ['TRAC_ENV'] 

Add Comment

Modify Ticket

Action
as new .
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.