diff --git a/modules/nova/backend.py b/modules/nova/backend.py index 8c4d6199..a4e7c3b7 100644 --- a/modules/nova/backend.py +++ b/modules/nova/backend.py @@ -64,8 +64,7 @@ class NovaBackend(BaseBackend, ICapRadio, ICapCollection): def iter_resources(self, objs, split_path): if Radio in objs: - if len(split_path) > 0: - raise CollectionNotFound(split_path) + self._restrict_level(split_path) for id in self._RADIOS.iterkeys(): yield self.get_radio(id) diff --git a/modules/ouifm/backend.py b/modules/ouifm/backend.py index de328274..b0b1d808 100644 --- a/modules/ouifm/backend.py +++ b/modules/ouifm/backend.py @@ -48,8 +48,7 @@ class OuiFMBackend(BaseBackend, ICapRadio, ICapCollection): def iter_resources(self, objs, split_path): if Radio in objs: - if len(split_path) > 0: - raise CollectionNotFound(split_path) + self._restrict_level(split_path) for id in self._RADIOS.iterkeys(): yield self.get_radio(id) diff --git a/modules/radiofrance/backend.py b/modules/radiofrance/backend.py index 672bfe8b..71e694a3 100644 --- a/modules/radiofrance/backend.py +++ b/modules/radiofrance/backend.py @@ -112,7 +112,7 @@ class RadioFranceBackend(BaseBackend, ICapRadio, ICapCollection, ICapVideo): for _id in sorted(self._RADIOS.iterkeys()): if not _id.startswith('fb'): yield self.get_radio(_id) - yield Collection(['francebleu'], 'France Bleu') + yield Collection([u'francebleu'], u'France Bleu') else: raise CollectionNotFound(split_path) diff --git a/modules/redmine/backend.py b/modules/redmine/backend.py index 0f544214..e1576c51 100644 --- a/modules/redmine/backend.py +++ b/modules/redmine/backend.py @@ -96,17 +96,15 @@ class RedmineBackend(BaseBackend, ICapContent, ICapBugTracker, ICapCollection): ############# CapCollection ################################################### def iter_resources(self, objs, split_path): if Project in objs or Issue in objs: + self._restrict_level(split_path, 1) if len(split_path) == 0: return [Collection([project.id], project.name) for project in self.iter_projects()] - - if len(split_path) == 1: + elif len(split_path) == 1: query = Query() query.project = unicode(split_path[0]) return self.iter_issues(query) - raise CollectionNotFound(split_path) - def validate_collection(self, objs, collection): if len(collection.split_path) == 0: return diff --git a/weboob/capabilities/bank.py b/weboob/capabilities/bank.py index 769d0d2a..d9c712a4 100644 --- a/weboob/capabilities/bank.py +++ b/weboob/capabilities/bank.py @@ -96,8 +96,7 @@ class Transfer(CapBaseObject): class ICapBank(ICapCollection): def iter_resources(self, objs, split_path): if Account in objs: - if len(split_path) > 0: - raise CollectionNotFound(split_path) + self._restrict_level(split_path) return self.iter_accounts() diff --git a/weboob/capabilities/bill.py b/weboob/capabilities/bill.py index 3a3dfff5..442f51fb 100644 --- a/weboob/capabilities/bill.py +++ b/weboob/capabilities/bill.py @@ -56,8 +56,7 @@ class Subscription(CapBaseObject): class ICapBill(ICapCollection): def iter_resources(self, objs, split_path): if Subscription in objs: - if len(split_path) > 0: - raise CollectionNotFound(split_path) + self._restrict_level(split_path) return self.iter_subscription() diff --git a/weboob/capabilities/collection.py b/weboob/capabilities/collection.py index 5742c89d..c8a93564 100644 --- a/weboob/capabilities/collection.py +++ b/weboob/capabilities/collection.py @@ -100,3 +100,7 @@ class ICapCollection(IBaseCap): i.next() except StopIteration: raise CollectionNotFound(collection.split_path) + + def _restrict_level(self, split_path, lmax=0): + if len(split_path) > lmax: + raise CollectionNotFound(split_path)