You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@chemistry.apache.org by "Jeff Potts (JIRA)" <ji...@apache.org> on 2017/08/31 14:51:01 UTC
[jira] [Closed] (CMIS-995) UnicodeEncodeError when calling
urlencode method with a dict that contains accented characters
[ https://issues.apache.org/jira/browse/CMIS-995?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jeff Potts closed CMIS-995.
---------------------------
> UnicodeEncodeError when calling urlencode method with a dict that contains accented characters
> ----------------------------------------------------------------------------------------------
>
> Key: CMIS-995
> URL: https://issues.apache.org/jira/browse/CMIS-995
> Project: Chemistry
> Issue Type: Bug
> Components: python-cmislib
> Environment: Linux, python 2.7x, Alfresco 5.0.x, cmislib dev
> Reporter: Laurent Mignon
> Assignee: Jeff Potts
> Fix For: cmislib 0.6.0
>
>
> {code}
> diff --git a/src/cmislib/browser/binding.py b/src/cmislib/browser/binding.py
> index 800223c..0371cba 100644
> --- a/src/cmislib/browser/binding.py
> +++ b/src/cmislib/browser/binding.py
> @@ -364,7 +364,7 @@ class BrowserCmisObject(object):
>
> # invoke the URL
> result = self._cmisClient.binding.post(updateUrl.encode('utf-8'),
> - urlencode(props),
> + safe_urlencode(props),
> 'application/x-www-form-urlencoded',
> self._cmisClient.username,
> self._cmisClient.password)
> @@ -393,7 +393,7 @@ class BrowserCmisObject(object):
>
> # invoke the URL
> self._cmisClient.binding.post(moveUrl.encode('utf-8'),
> - urlencode(props),
> + safe_urlencode(props),
> 'application/x-www-form-urlencoded',
> self._cmisClient.username,
> self._cmisClient.password)
> @@ -421,7 +421,7 @@ class BrowserCmisObject(object):
>
> # invoke the URL
> self._cmisClient.binding.post(delUrl.encode('utf-8'),
> - urlencode(props),
> + safe_urlencode(props),
> 'application/x-www-form-urlencoded',
> self._cmisClient.username,
> self._cmisClient.password,
> @@ -1655,7 +1655,7 @@ class BrowserDocument(BrowserCmisObject):
>
> # invoke the URL
> result = self._cmisClient.binding.post(coUrl.encode('utf-8'),
> - urlencode(props),
> + safe_urlencode(props),
> 'application/x-www-form-urlencoded',
> self._cmisClient.username,
> self._cmisClient.password)
> @@ -1682,7 +1682,7 @@ class BrowserDocument(BrowserCmisObject):
>
> # invoke the URL
> self._cmisClient.binding.post(coUrl.encode('utf-8'),
> - urlencode(props),
> + safe_urlencode(props),
> 'application/x-www-form-urlencoded',
> self._cmisClient.username,
> self._cmisClient.password)
> @@ -1933,7 +1933,7 @@ class BrowserDocument(BrowserCmisObject):
>
> # invoke the URL
> self._cmisClient.binding.post(delUrl.encode('utf-8'),
> - urlencode(props),
> + safe_urlencode(props),
> 'application/x-www-form-urlencoded',
> self._cmisClient.username,
> self._cmisClient.password)
> @@ -2051,7 +2051,7 @@ class BrowserFolder(BrowserCmisObject):
>
> # invoke the URL
> result = self._cmisClient.binding.post(createFolderUrl.encode('utf-8'),
> - urlencode(props),
> + safe_urlencode(props),
> 'application/x-www-form-urlencoded',
> self._cmisClient.username,
> self._cmisClient.password,
> @@ -2269,7 +2269,7 @@ class BrowserFolder(BrowserCmisObject):
>
> # invoke the URL
> self._cmisClient.binding.post(delUrl.encode('utf-8'),
> - urlencode(props),
> + safe_urlencode(props),
> 'application/x-www-form-urlencoded',
> self._cmisClient.username,
> self._cmisClient.password,
> @@ -2309,7 +2309,7 @@ class BrowserFolder(BrowserCmisObject):
>
> # invoke the URL
> result = self._cmisClient.binding.post(addUrl.encode('utf-8'),
> - urlencode(props),
> + safe_urlencode(props),
> 'application/x-www-form-urlencoded',
> self._cmisClient.username,
> self._cmisClient.password,
> @@ -2332,7 +2332,7 @@ class BrowserFolder(BrowserCmisObject):
>
> # invoke the URL
> result = self._cmisClient.binding.post(remUrl.encode('utf-8'),
> - urlencode(props),
> + safe_urlencode(props),
> 'application/x-www-form-urlencoded',
> self._cmisClient.username,
> self._cmisClient.password)
> @@ -3101,6 +3101,23 @@ def encode_multipart_formdata(fields, contentFile, contentType):
> return content_type, body
>
>
> +def safe_urlencode(in_dict):
> + """ Safe encoding of values taking care of unicode values
> + urllib.urlencode doesn't like unicode values
> + """
> + def encoded_dict(in_dict):
> + out_dict = {}
> + for k, v in in_dict.iteritems():
> + if isinstance(v, unicode):
> + v = v.encode('utf8')
> + elif isinstance(v, str):
> + # Must be encoded in UTF-8
> + v.decode('utf8')
> + out_dict[k] = v
> + return out_dict
> + return urlencode(encoded_dict(in_dict))
> +
> +
> class ResultsSerializer(object):
>
> {code}
> https://github.com/lmignon/python-cmislib/commit/159f0202d7dd012230b31a42ef13ef0d03b46f96?diff=unified
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)