diff options
Diffstat (limited to 'sugar_network/toolkit/router.py')
-rw-r--r-- | sugar_network/toolkit/router.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/sugar_network/toolkit/router.py b/sugar_network/toolkit/router.py index 7f2c268..9a430b7 100644 --- a/sugar_network/toolkit/router.py +++ b/sugar_network/toolkit/router.py @@ -396,14 +396,14 @@ class Response(dict): for key, value in dict.items(self): if type(value) in (list, tuple): for i in value: - result.append((key, str(i))) + result.append((_to_ascii(key), _to_ascii(i))) else: - result.append((key, str(value))) + result.append((_to_ascii(key), _to_ascii(value))) return result def __repr__(self): items = ['%s=%r' % i for i in self.items() + self.meta.items()] - return '<Response %s>' % ' '.join(items) + return '<Response %r>' % items def __contains__(self, key): dict.__contains__(self, key.lower()) @@ -576,7 +576,7 @@ class Router(object): response.content_length = len(result) if result else 0 for key, value in response.meta.items(): - response.set('X-SN-%s' % str(key), json.dumps(value)) + response.set('X-SN-%s' % _to_ascii(key), json.dumps(value)) if request.method == 'HEAD' and result is not None: _logger.warning('Content from HEAD response is ignored') @@ -750,7 +750,7 @@ def _filename(names, mime_type): for name in names: if isinstance(name, dict): name = toolkit.gettext(name) - parts.append(''.join([i.capitalize() for i in str(name).split()])) + parts.append(''.join([i.capitalize() for i in name.split()])) result = '-'.join(parts) if mime_type: if not mimetypes.inited: @@ -832,6 +832,14 @@ def _parse_accept_language(value): return langs +def _to_ascii(value): + if not isinstance(value, basestring): + return str(value) + if isinstance(value, unicode): + return value.encode('utf8') + return value + + class _Routes(dict): def __init__(self, parent=None): |