From 9dc1e559a76e165fc3e13114160b58f6d054988c Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Wed, 13 Jul 2011 15:12:41 +0200 Subject: [PATCH] add parameters --departure-time and --arrival-time --- weboob/applications/traveloob/traveloob.py | 48 +++++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/weboob/applications/traveloob/traveloob.py b/weboob/applications/traveloob/traveloob.py index 5b0c9ed1..62f79a95 100644 --- a/weboob/applications/traveloob/traveloob.py +++ b/weboob/applications/traveloob/traveloob.py @@ -18,9 +18,11 @@ # along with weboob. If not, see . +import sys +from datetime import datetime import logging -from weboob.capabilities.travel import ICapTravel +from weboob.capabilities.travel import ICapTravel, RoadmapFilters from weboob.tools.application.repl import ReplApplication @@ -35,6 +37,10 @@ class Traveloob(ReplApplication): CAPS = ICapTravel DEFAULT_FORMATTER = 'table' + def add_application_options(self, group): + group.add_option('--departure-time') + group.add_option('--arrival-time') + def do_stations(self, pattern): """ stations PATTERN @@ -74,8 +80,46 @@ class Traveloob(ReplApplication): self.flush() def do_roadmap(self, line): + """ + roadmap DEPARTURE ARRIVAL + + Display the roadmap to travel from DEPARTURE to ARRIVAL. + + Command-line parameters: + --departure-time TIME requested departure time + --arrival-time TIME requested arrival time + + TIME might be in form "yyyy-mm-dd HH:MM" or "HH:MM". + + Example: + > roadmap Puteaux Aulnay-sous-Bois --arrival-time 22:00 + """ departure, arrival = self.parse_command_args(line, 2, 2) - for backend, route in self.do('iter_roadmap', departure, arrival): + filters = RoadmapFilters() + try: + filters.departure_time = self.parse_datetime(self.options.departure_time) + filters.arrival_time = self.parse_datetime(self.options.arrival_time) + except ValueError, e: + print >>sys.stderr, 'Invalid datetime value: %s' % e + print >>sys.stderr, 'Please enter a datetime in form "yyyy-mm-dd HH:MM" or "HH:MM".' + return 1 + + for backend, route in self.do('iter_roadmap', departure, arrival, filters): self.format(route) self.flush() + + def parse_datetime(self, text): + if text is None: + return None + + try: + date = datetime.strptime(text, '%Y-%m-%d %H:%M') + except ValueError: + try: + date = datetime.strptime(text, '%H:%M') + except ValueError: + raise ValueError(text) + date = datetime.now().replace(hour=date.hour, minute=date.minute) + + return date