diff --git a/modules/dresdenwetter/backend.py b/modules/dresdenwetter/backend.py index 9785c08fe20ed89eda769a310d0544743e30d4e7..4985912cbead9ba68f84c377152856f8d57a08d0 100644 --- a/modules/dresdenwetter/backend.py +++ b/modules/dresdenwetter/backend.py @@ -56,7 +56,7 @@ def _get_sensor_by_id(self, id): def iter_sensors(self, gauge, pattern=None): if not isinstance(gauge, Gauge): - gauge = find_object(self.iter_gauges(), gauge, error=SensorNotFound) + gauge = find_object(self.iter_gauges(), id=gauge, error=SensorNotFound) if pattern is None: for sensor in gauge.sensors: yield sensor diff --git a/modules/ing/backend.py b/modules/ing/backend.py index 92076d3c7939f72f581af1e5048515e26afadadc..31b16e100da30d27ed837ee498aedc0ecf895e40 100644 --- a/modules/ing/backend.py +++ b/modules/ing/backend.py @@ -68,7 +68,7 @@ def iter_accounts(self): return self.browser.get_accounts_list() def get_account(self, _id): - return find_object(self.browser.get_accounts_list(), _id, error=AccountNotFound) + return find_object(self.browser.get_accounts_list(), id=_id, error=AccountNotFound) def iter_history(self, account): if not isinstance(account, Account): @@ -100,11 +100,11 @@ def iter_subscription(self): return self.browser.get_subscriptions() def get_subscription(self, _id): - return find_object(self.browser.get_subscriptions(), _id, error=SubscriptionNotFound) + return find_object(self.browser.get_subscriptions(), id=_id, error=SubscriptionNotFound) - def get_bill(self, id): - subscription = self.get_subscription(id.split('-')[0]) - return find_object(self.browser.get_bills(subscription), id, error=BillNotFound) + def get_bill(self, _id): + subscription = self.get_subscription(_id.split('-')[0]) + return find_object(self.browser.get_bills(subscription), id=_id, error=BillNotFound) def iter_bills(self, subscription): if not isinstance(subscription, Subscription): diff --git a/modules/poivy/backend.py b/modules/poivy/backend.py index 87638ca82532e79d12411ebec5c765265d51756a..4b971c6f17a6bc22eb0f9224eb918430a7c41f5e 100644 --- a/modules/poivy/backend.py +++ b/modules/poivy/backend.py @@ -52,7 +52,7 @@ def iter_subscription(self): return self.browser.get_subscription_list() def get_subscription(self, _id): - return find_object(self.iter_subscription(), _id, error=SubscriptionNotFound) + return find_object(self.iter_subscription(), id=_id, error=SubscriptionNotFound) def iter_bills_history(self, subscription): # Try if we have a real subscription before to load the history diff --git a/modules/sachsen/backend.py b/modules/sachsen/backend.py index d2840609d827f90a03aae907d7be30f52d5e7390..7a63380d8a3e3cce525c97be9e4eb9a6ec446f85 100644 --- a/modules/sachsen/backend.py +++ b/modules/sachsen/backend.py @@ -56,7 +56,7 @@ def _get_sensor_by_id(self, id): def iter_sensors(self, gauge, pattern=None): if not isinstance(gauge, Gauge): - gauge = find_object(self.browser.get_rivers_list(), gauge, error=SensorNotFound) + gauge = find_object(self.browser.get_rivers_list(), id=gauge, error=SensorNotFound) if pattern is None: for sensor in gauge.sensors: yield sensor diff --git a/weboob/capabilities/base.py b/weboob/capabilities/base.py index edd145a686857bf0944ff6c18511c28f6fc99f3d..6c6ae0442f5ffe97fcc48261936913fb8a45235b 100644 --- a/weboob/capabilities/base.py +++ b/weboob/capabilities/base.py @@ -46,13 +46,20 @@ def empty(value): return True return False -def find_object(mylist, _id, error=None): +def find_object(mylist, error=None, **kwargs): """ - Very simple tools to return an object with the matching _id + Very simple tools to return an object with the matching parameters in + kwargs. """ for a in mylist: - if a.id == _id: + found = True + for key, value in kwargs.iteritems(): + if getattr(a, key) != value: + found = False + break + if found: return a + if error is not None: raise error() return None