[core] Avoid logging failure when data contains non unicode in REST resource lib
This is for Python 2 behavior and not 3.
@@ -21,7 +21,7 @@ import posixpath
import urllib
import time
-from django.utils.encoding import iri_to_uri, smart_str
+from django.utils.encoding import iri_to_uri
from django.utils.http import urlencode
from desktop import conf
@@ -118,19 +118,21 @@ class Resource(object):
log_length = conf.REST_RESPONSE_SIZE.get() != -1 and conf.REST_RESPONSE_SIZE.get() if log_response else 0
duration = time.time() - start_time
try:
- message = '%s %s %s%s%s %s%s returned in %dms %s %s %s%s' % (
+ req_data = smart_unicode(data, errors='replace')
+ resp_content = smart_unicode(resp.content, errors='replace')
+ message = u'%s %s %s%s%s %s%s returned in %dms %s %s %s%s' % (
method,
type(self._client._session.auth) if self._client._session and self._client._session.auth else None,
self._client._base_url,
- smart_str(path, errors='replace'),
+ smart_unicode(path, errors='replace'),
iri_to_uri('?' + urlencode(params)) if params else '',
- smart_str(data, errors='replace')[:log_length] if data else '',
- log_length and len(data) > log_length and '...' or '' if data else '',
+ req_data[:log_length] if data else '',
+ log_length and len(req_data) > log_length and '...' or '' if data else '',
(duration * 1000),
resp.status_code if resp else 0,
- len(resp.content) if resp else 0,
- smart_str(resp.content, errors='replace')[:log_length] if resp else '',
- log_length and len(resp.content) > log_length and '...' or '' if resp else ''
+ len(resp_content) if resp else 0,
+ resp_content[:log_length] if resp else '',
+ log_length and len(resp_content) > log_length and '...' or '' if resp else ''
)
except:
short_call_name = '%s %s' % (method, self._client._base_url)
