From 48ccf3f0791dee5d4890f88d6887d258c3f0ab84 Mon Sep 17 00:00:00 2001 From: Bezleputh Date: Tue, 22 Jul 2014 11:33:33 +0200 Subject: [PATCH] [meteofrance] raise an exception if forecast param is not a city id closes #1433 --- modules/meteofrance/browser.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/meteofrance/browser.py b/modules/meteofrance/browser.py index a25190d4..4503ac92 100644 --- a/modules/meteofrance/browser.py +++ b/modules/meteofrance/browser.py @@ -22,6 +22,7 @@ import urllib from weboob.tools.browser import BaseBrowser from .pages.meteo import WeatherPage, SearchCitiesPage +from weboob.capabilities.weather import CityNotFound __all__ = ['MeteofranceBrowser'] @@ -49,14 +50,20 @@ class MeteofranceBrowser(BaseBrowser): return self.page.iter_cities() def iter_forecast(self, city_id): - mcity = self.iter_city_search(city_id).next() + mcity = self.get_city(city_id) self.location(self.WEATHER_URL.format(city_id=mcity.id, city_name=mcity.name)) assert self.is_on_page(WeatherPage) - return self.page.iter_forecast() def get_current(self, city_id): - mcity = self.iter_city_search(city_id).next() + mcity = self.get_city(city_id) self.location(self.WEATHER_URL.format(city_id=mcity.id, city_name=mcity.name)) assert self.is_on_page(WeatherPage) return self.page.get_current() + + def get_city(self, city_id): + cities = self.iter_city_search(city_id) + for city in cities: + if city_id == city.id: + return city + raise CityNotFound('Unable to find a city whose id is %s' % city_id)