From 31921549a789f229efdec5b607353bbd702d57db Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Mon, 6 Dec 2010 15:26:54 +0100 Subject: [PATCH] use specific formatter for 'current' command --- weboob/applications/wetboobs/wetboobs.py | 24 +++++++++++++++++++++- weboob/backends/meteofrance/pages/meteo.py | 2 +- weboob/capabilities/weather.py | 2 +- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/weboob/applications/wetboobs/wetboobs.py b/weboob/applications/wetboobs/wetboobs.py index 7b1bf62f..8d5222b3 100644 --- a/weboob/applications/wetboobs/wetboobs.py +++ b/weboob/applications/wetboobs/wetboobs.py @@ -15,6 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +from datetime import datetime from weboob.capabilities.weather import ICapWeather from weboob.tools.application.repl import ReplApplication @@ -35,6 +36,25 @@ class ForecastsFormatter(IFormatter): result += ' %s' % item['text'] return result +class CurrentFormatter(IFormatter): + MANDATORY_FIELDS = ('id', 'date', 'temp') + + def flush(self): + pass + + def format_dict(self, item): + if isinstance(item['date'], datetime): + date = item['date'].strftime('%y-%m-%d %H:%M:%S') + else: + date = item['date'] + + result = u'%s%s%s: %s' % (ReplApplication.BOLD, date, ReplApplication.NC, item['temp']) + if 'unit' in item and item['unit']: + result += u'°%s' % item['unit'] + if 'text' in item and item['text']: + result += u' - %s' % item['text'] + return result + class CitiesFormatter(IFormatter): MANDATORY_FIELDS = ('id', 'name') count = 0 @@ -48,7 +68,7 @@ class CitiesFormatter(IFormatter): backend = item['id'].split('@', 1)[1] result = u'%s* (%d) %s (%s)%s' % (ReplApplication.BOLD, self.count, item['name'], backend, ReplApplication.NC) else: - result = u'%s* (%d) %s%s' % (ReplApplication.BOLD, item['id'], item['name'], ReplApplication.NC) + result = u'%s* (%s) %s%s' % (ReplApplication.BOLD, item['id'], item['name'], ReplApplication.NC) return result class WetBoobs(ReplApplication): @@ -57,9 +77,11 @@ class WetBoobs(ReplApplication): COPYRIGHT = 'Copyright(C) 2010 Romain Bignon' CAPS = ICapWeather EXTRA_FORMATTERS = {'cities': CitiesFormatter, + 'current': CurrentFormatter, 'forecasts': ForecastsFormatter, } COMMANDS_FORMATTERS = {'search': 'cities', + 'current': 'current', 'forecasts': 'forecasts', } diff --git a/weboob/backends/meteofrance/pages/meteo.py b/weboob/backends/meteofrance/pages/meteo.py index 77eb4275..7d7c12f5 100644 --- a/weboob/backends/meteofrance/pages/meteo.py +++ b/weboob/backends/meteofrance/pages/meteo.py @@ -57,7 +57,7 @@ class WeatherPage(BasePage): for img in div.getiterator("img"): mtxt = img.attrib["title"] break - mdate = str(datetime.datetime.now()) + mdate = datetime.datetime.now() yield Current(mdate, temp, mtxt, "C") diff --git a/weboob/capabilities/weather.py b/weboob/capabilities/weather.py index 8599b36b..3e8c4840 100644 --- a/weboob/capabilities/weather.py +++ b/weboob/capabilities/weather.py @@ -37,8 +37,8 @@ class Current(CapBaseObject): def __init__(self, date, temp, text, unit): CapBaseObject.__init__(self, date) self.add_field('date', (basestring,datetime), date) - self.add_field('temp', (int,float), temp) self.add_field('text', basestring, text) + self.add_field('temp', (int,float), temp) self.add_field('unit', basestring, unit) class City(CapBaseObject):