Merge pull request #52 from untitaker/special_href

Fix #49
This commit is contained in:
Markus Unterwaditzer 2014-05-13 19:55:36 +02:00
commit 0cd41290cc
3 changed files with 8 additions and 3 deletions

View file

@ -22,6 +22,7 @@ class StorageTests(object):
def _create_bogus_item(self, uid, item_template=None):
r = random.random()
item_template = item_template or self.item_template
uid = '{}@vdirsyncer_tests'.format(uid)
return Item(item_template.format(uid=uid, r=r))
def get_storage_args(self, collection=None):
@ -34,8 +35,6 @@ class StorageTests(object):
def test_generic(self):
items = map(self._create_bogus_item, range(1, 10))
for i, item in enumerate(items):
assert item.uid == text_type(i + 1), item.raw
s = self._get_storage()
hrefs = []
for item in items:

View file

@ -117,9 +117,10 @@ class DavStorage(Storage):
schema.'''
x = utils.urlparse.urljoin(self.url, href)
assert x.startswith(self.url)
return utils.urlparse.urlsplit(x).path
return utils.urlunquote_plus(utils.urlparse.urlsplit(x).path)
def _get_href(self, uid):
uid = utils.urlunquote_plus(uid)
return self._normalize_href(super(DavStorage, self)._get_href(uid))
def _request(self, method, path, data=None, headers=None):

View file

@ -22,11 +22,16 @@ PY2 = sys.version_info[0] == 2
if PY2:
import urlparse
from urllib import \
quote_plus as urlquote_plus, \
unquote_plus as urlunquote_plus
text_type = unicode # flake8: noqa
iteritems = lambda x: x.iteritems()
itervalues = lambda x: x.itervalues()
else:
import urllib.parse as urlparse
urlquote_plus = urlparse.quote_plus
urlunquote_plus = urlparse.unquote_plus
text_type = str
iteritems = lambda x: x.items()
itervalues = lambda x: x.values()