1335: Error viewing review request with attached screenshot with non-latin symbols in its name

Ari***@gmai***** (Google Code) (Is this you? Claim this profile.)
Jan. 4, 2010
Can't reproduce on demo.review-board.org, because it doesn't allow to attach screenshots.

What version are you running?
1.0.3

What's the URL of the page containing the problem?
/r/<id>

What steps will reproduce the problem?
1. Attach screenshot with, e.g. russian name to review request
2. Point your browser to page with this review request

What is the expected output? What do you see instead?
Expected output was normal review request page.
I saw 500 page instead.

What operating system are you using? What browser?
Ubuntu Hardy on Server, Max OS X 10.6 on Client, Safari 4.0.3

Exception text:
UnicodeEncodeError   posixpath:171 ascii, /var/lib/yandex/tools-
rb/arc/media/uploaded/images/2009/09/29/Снимок_экрана_2009-09-
29_в_16.50.09_400x100.png, 62, 68, ordinal not in range(128)

Sep 30 09:21:12 rb TOOLS-RB-ARC-TRACEBACK: 2009-09-30 09:21:12,365 traceback
       ERROR
      Path: /arc/r/295/ GET: <QueryDict: {}> POST: <QueryDict: {}> Traceback (most recent call 
last):
    File "/var/lib/python-support/python2.5/django/core/handlers/base.py", line 92, in 
get_response     response = callback(request, *callback_args, **callback_kwargs)
    File "/var/lib/python-support/python2.5/reviewboard/accounts/decorators.py", line 27, in 
_check
     return view_func(*args, **kwargs)
    File "/var/lib/python-support/python2.5/reviewboard/reviews/views.py", line 237, in 
review_detail
     'PRE_CREATION': PRE_CREATION,
    File "/var/lib/python-support/python2.5/django/shortcuts/__init__.py", line 20, in 
render_to_response
     return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
    File "/var/lib/python-support/python2.5/django/template/loader.py", line 108, in 
render_to_string
     return t.render(context_instance)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 178, in render     
return self.nodelist.render(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 779, in render     
bits.append(self.render_node(node, context))
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 792, in 
render_node
     return node.render(context)
    File "/var/lib/python-support/python2.5/django/template/loader_tags.py", line 97, in render     
return compiled_parent.render(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 178, in render     
return self.nodelist.render(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 779, in render     
bits.append(self.render_node(node, context))
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 792, in 
render_node
     return node.render(context)
    File "/var/lib/python-support/python2.5/django/template/loader_tags.py", line 97, in render     
return compiled_parent.render(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 178, in render     
return self.nodelist.render(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 779, in render     
bits.append(self.render_node(node, context))
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 792, in 
render_node
     return node.render(context)
    File "/var/lib/python-support/python2.5/django/template/loader_tags.py", line 24, in render     
result = self.nodelist.render(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 779, in render     
bits.append(self.render_node(node, context))
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 792, in 
render_node
     return node.render(context)
    File "/var/lib/python-support/python2.5/djblets/util/decorators.py", line 150, in render     
return self.tag_func(context, self.nodelist, *args)
    File "/var/lib/python-support/python2.5/djblets/util/templatetags/djblets_deco.py", line 44, 
in box
     'content': nodelist.render(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 779, in render     
bits.append(self.render_node(node, context))
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 792, in 
render_node     return node.render(context)
    File "/var/lib/python-support/python2.5/django/template/loader_tags.py", line 111, in 
render     return self.template.render(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 178, in render     
return self.nodelist.render(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 779, in render     
bits.append(self.render_node(node, context))
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 792, in 
render_node     return node.render(context)
    File "/var/lib/python-support/python2.5/django/template/defaulttags.py", line 243, in render     
return self.nodelist_true.render(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 779, in render     
bits.append(self.render_node(node, context))
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 792, in 
render_node     return node.render(context)
    File "/var/lib/python-support/python2.5/django/template/defaulttags.py", line 155, in render     
nodelist.append(node.render(context))
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 826, in render     
output = self.filter_expression.resolve(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 546, in resolve     
obj = self.var.resolve(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 687, in resolve     
value = self._resolve_lookup(context)
    File "/var/lib/python-support/python2.5/django/template/__init__.py", line 722, in 
_resolve_lookup
     current = current()
    File "/var/lib/python-support/python2.5/reviewboard/reviews/models.py", line 140, in thumb     
url = thumbnail(self.image)
    File "/var/lib/python-support/python2.5/djblets/util/templatetags/djblets_images.py", line 
90, in thumbnail
     if not os.path.exists(miniature_filename):
    File "/usr/lib/python2.5/posixpath.py", line 171, in exists
     st = os.stat(path)
  UnicodeEncodeError: 'ascii' codec can't encode characters in position 62-67: ordinal not in 
range(128)

PS: I attached example screenshot with russian name to this ticket to reproduce
david
#1 david
This has since been fixed in djblets.
  • +Fixed