3796: Internal Error deleting review due to character encoding.

msunde
What version are you running?
2.0.13 with bug fix: #3784

What's the URL of the page containing the problem?
http://review.XXXXXX/r/991/

What steps will reproduce the problem?
1. When viewing the review.
2. Select close / delete permanently
3. Nothing happens.
4. Check logs, there is an error.

What is the expected output? What do you see instead?
Review would be deleted.

What operating system are you using? What browser?
Amazon Linux, Google Chrome.

Please provide any additional information below.
Here is the stack trace from the logs:

2015-03-04 04:51:55,802 - ERROR -  - Exception thrown for user XXXX at http://review.XXXXXX/api/review-requests/991/?api_format=json&force-text-type=html&include-text-types=raw

'ascii' codec can't decode byte 0xc3 in position 22: ordinal not in range(128)
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/Django-1.6.9-py2.6.egg/django/core/handlers/base.py", line 112, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.6.9-py2.6.egg/django/views/decorators/cache.py", line 52, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.6.9-py2.6.egg/django/views/decorators/vary.py", line 19, in inner_func
    response = func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 497, in __call__
    request, method, view, api_format=api_format, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 568, in call_method_view
    return view(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/util/decorators.py", line 78, in _call
    f = augmented_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.13-py2.6.egg/reviewboard/webapi/decorators.py", line 31, in _check
    return webapi_login_required(view_func)(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 138, in _checklogin
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.13-py2.6.egg/reviewboard/webapi/decorators.py", line 110, in _check
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/util/decorators.py", line 78, in _call
    f = augmented_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 789, in get
    etag = self.get_etag(request, obj)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 1264, in get_etag
    encode_etag=False)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 1302, in generate_etag
    values.append(six.text_type(getattr(obj, field)))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 22: ordinal not in range(128)
#1 msunde
Another error in the logs due to character encoding:

2015-03-04 13:09:21,428 - ERROR -  - Exception thrown for user XXXX at http://review.XXXX/api/users/?q=j&limit=150&timestamp=1425474561256&fullname=1

'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/Django-1.6.9-py2.6.egg/django/core/handlers/base.py", line 112, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.6.9-py2.6.egg/django/views/decorators/cache.py", line 52, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.6.9-py2.6.egg/django/views/decorators/vary.py", line 19, in inner_func
    response = func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 497, in __call__
    request, method, view, api_format=api_format, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 568, in call_method_view
    return view(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.13-py2.6.egg/reviewboard/webapi/decorators.py", line 110, in _check
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 287, in _validate
    return view_func(*args, **new_kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.13-py2.6.egg/reviewboard/webapi/resources/user.py", line 162, in get_list
    return super(UserResource, self).get_list(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.13-py2.6.egg/reviewboard/webapi/decorators.py", line 31, in _check
    return webapi_login_required(view_func)(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 138, in _checklogin
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.13-py2.6.egg/reviewboard/webapi/decorators.py", line 110, in _check
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 287, in _validate
    return view_func(*args, **new_kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.13-py2.6.egg/reviewboard/webapi/base.py", line 78, in get_list
    return self._get_list_impl(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.13-py2.6.egg/reviewboard/webapi/base.py", line 93, in _get_list_impl
    return super(WebAPIResource, self).get_list(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/util/decorators.py", line 78, in _call
    f = augmented_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 117, in _call
    return view_func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/decorators.py", line 287, in _validate
    return view_func(*args, **new_kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 865, in get_list
    **self.build_response_args(request))
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/responses.py", line 171, in __init__
    for obj in self.results
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 863, in <lambda>
    obj, request=request, *args, **kwargs),
  File "/usr/lib/python2.6/site-packages/ReviewBoard-2.0.13-py2.6.egg/reviewboard/webapi/resources/user.py", line 98, in serialize_object
    obj, request=request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 1025, in serialize_object
    value = serialize_func(obj, request=request)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/webapi/resources.py", line 1568, in serialize_fullname_field
    return user.get_full_name()
  File "/usr/lib/python2.6/site-packages/Django-1.6.9-py2.6.egg/django/contrib/auth/models.py", line 402, in get_full_name
    full_name = '%s %s' % (self.first_name, self.last_name)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)
#2 msunde
One more:

2015-03-04 05:21:43,086 - ERROR -  - Error when calling render_data for DataGrid Column <djblets.datagrid.grids.Column object at 0x7fcaa809ef50>: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/datagrid/grids.py", line 266, in render_cell
    rendered_data = self.render_data(state, obj)
  File "/usr/lib/python2.6/site-packages/Djblets-0.8.15-py2.6.egg/djblets/datagrid/grids.py", line 328, in render_data
    value = value()
  File "/usr/lib/python2.6/site-packages/Django-1.6.9-py2.6.egg/django/contrib/auth/models.py", line 402, in get_full_name
    full_name = '%s %s' % (self.first_name, self.last_name)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
#3 msunde
These character encoding issues are really making it difficult for the french users. Thanks.
#4 msunde
Screen shot showing the error when discarding a review request. The review request seems to be in a state whereby I can not submit / discard it. The above errors are appearing in the log when performing actions. Thanks.