ability to set an arrival or a departure time
This commit is contained in:
parent
c719865e7a
commit
c284a24842
5 changed files with 37 additions and 7 deletions
|
|
@ -50,9 +50,9 @@ class TransilienBackend(BaseBackend, ICapTravel):
|
|||
departure.plateform = d['plateform']
|
||||
yield departure
|
||||
|
||||
def iter_roadmap(self, departure, arrival):
|
||||
def iter_roadmap(self, departure, arrival, filters):
|
||||
with self.browser:
|
||||
roadmap = self.browser.get_roadmap(departure, arrival)
|
||||
roadmap = self.browser.get_roadmap(departure, arrival, filters)
|
||||
|
||||
for s in roadmap['steps']:
|
||||
step = RoadStep(s['id'])
|
||||
|
|
|
|||
|
|
@ -54,11 +54,11 @@ class Transilien(BaseBrowser):
|
|||
|
||||
return self.page.iter_routes()
|
||||
|
||||
def get_roadmap(self, departure, arrival):
|
||||
def get_roadmap(self, departure, arrival, filters):
|
||||
self.location('/web/site/accueil/etat-trafic/chercher-itineraire/lang/en')
|
||||
|
||||
assert self.is_on_page(RoadmapSearchPage)
|
||||
self.page.search(departure, arrival)
|
||||
self.page.search(departure, arrival, filters.departure_time, filters.arrival_time)
|
||||
|
||||
assert self.is_on_page(RoadmapConfirmPage)
|
||||
self.page.confirm()
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ class DeparturesPage(BasePage):
|
|||
try :
|
||||
time = datetime.datetime.combine(datetime.date.today(), datetime.time(*[int(x) for x in time.split(':')]))
|
||||
except ValueError:
|
||||
self.logger.warning('Unable to parse datetime')
|
||||
self.logger.warning('Unable to parse datetime "%s"' % time)
|
||||
|
||||
yield {'type': to_unicode(code_mission),
|
||||
'time': time,
|
||||
|
|
|
|||
|
|
@ -21,18 +21,37 @@
|
|||
import re
|
||||
import datetime
|
||||
|
||||
from weboob.capabilities.travel import RoadmapError
|
||||
from weboob.tools.browser import BasePage
|
||||
from weboob.tools.misc import to_unicode
|
||||
from weboob.tools.mech import ClientForm
|
||||
|
||||
|
||||
__all__ = ['RoadmapPage']
|
||||
|
||||
|
||||
class RoadmapSearchPage(BasePage):
|
||||
def search(self, departure, arrival):
|
||||
def search(self, departure, arrival, departure_time, arrival_time):
|
||||
self.browser.select_form('formHiRecherche')
|
||||
self.browser['lieuDepart'] = departure.encode('utf-8')
|
||||
self.browser['lieuArrivee'] = arrival.encode('utf-8')
|
||||
|
||||
time = None
|
||||
if departure_time:
|
||||
self.browser['typeHeure'] = ['1']
|
||||
time = departure_time
|
||||
elif arrival_time:
|
||||
self.browser['typeHeure'] = ['-1']
|
||||
time = arrival_time
|
||||
|
||||
if time:
|
||||
try:
|
||||
self.browser['jour'] = ['%d' % time.day]
|
||||
self.browser['mois'] = ['%02d/%d' % (time.month, time.year)]
|
||||
self.browser['heure'] = ['%02d' % time.hour]
|
||||
self.browser['minutes'] = ['%02d' % (time.minute - (time.minute%5))]
|
||||
except ClientForm.ItemNotFoundError:
|
||||
raise RoadmapError('Unable to establish a roadmap with %s time at "%s"' % ('departure' if departure_time else 'arrival', time))
|
||||
self.browser.submit()
|
||||
|
||||
class RoadmapConfirmPage(BasePage):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue