Don't emit collections twice

This commit is contained in:
Markus Unterwaditzer 2014-08-13 17:19:25 +02:00
parent a741b5d639
commit d9c2b7ba35

View file

@ -86,9 +86,14 @@ class Discover(object):
# Another one of Radicale's specialties: Discovery is broken (returning
# completely wrong URLs at every stage) as of version 0.9.
# https://github.com/Kozea/Radicale/issues/196
done = set()
for principal in itertools.chain(self._find_principal(), ['']):
for home in itertools.chain(self._find_home(principal), ['']):
for collection in self._find_collections(home):
href = utils.urlparse.urljoin(self.session.url,
collection['href'])
if href not in done:
done.add(href)
yield collection
def _find_home(self, principal):