[transilien] fix ambiguous departure/arrival in roadmap

This commit is contained in:
Bezleputh 2014-11-04 10:13:56 +01:00 committed by Romain Bignon
commit 04244da09c
2 changed files with 19 additions and 3 deletions

View file

@ -42,6 +42,8 @@ class Transilien(PagesBrowser):
dep = self.get_stations(departure, False).next().name dep = self.get_stations(departure, False).next().name
arr = self.get_stations(arrival, False).next().name arr = self.get_stations(arrival, False).next().name
self.roadmap_page.go(url='init').request_roadmap(dep, arr, filters.arrival_time) self.roadmap_page.go(url='init').request_roadmap(dep, arr, filters.arrival_time)
if self.page.is_ambiguous():
self.page.fix_ambiguity()
return self.page.get_roadmap() return self.page.get_roadmap()
def get_stations(self, pattern, only_station=True): def get_stations(self, pattern, only_station=True):
@ -61,7 +63,8 @@ class Transilien(PagesBrowser):
_date = datetime.strftime(date, "%d/%m/%Y-%H:%M") _date = datetime.strftime(date, "%d/%m/%Y-%H:%M")
self.horaires_page.go(station=station.replace(' ', '-'), arrival=arrival_id, station2=station_id, arrival2=arrival, date=_date) self.horaires_page.go(station=station.replace(' ', '-'), arrival=arrival_id, station2=station_id,
arrival2=arrival, date=_date)
return self.page.get_departures(station, arrival_name, date) return self.page.get_departures(station, arrival_name, date)
return [] return []
else: else:

View file

@ -60,8 +60,21 @@ class Child(Filter):
class RoadMapPage(HTMLPage): class RoadMapPage(HTMLPage):
def request_roadmap(self, station, arrival, arrival_date): def request_roadmap(self, station, arrival, arrival_date):
form = self.get_form('//form[@id="cRechercheItineraire"]') form = self.get_form('//form[@id="cRechercheItineraire"]')
form['depart'] = station form['depart'] = '%s' % station
form['arrivee'] = arrival form['arrivee'] = '%s' % arrival
form.submit()
def is_ambiguous(self):
return self.doc.xpath('//select[@id="gare_arrivee_ambigu"] | //select[@id="gare_depart_ambigu"]')
def fix_ambiguity(self):
form = self.get_form('//form[@id="cRechercheItineraire"]')
if self.doc.xpath('//select[@id="gare_arrivee_ambigu"]'):
form['coordArrivee'] = self.doc.xpath('//select[@id="gare_arrivee_ambigu"]/option[@cat="STOP_AREA"]/@value')[0]
if self.doc.xpath('//select[@id="gare_depart_ambigu"]'):
form['coordDepart'] = self.doc.xpath('//select[@id="gare_depart_ambigu"]/option[@cat="STOP_AREA"]/@value')[0]
form.submit() form.submit()
def get_roadmap(self): def get_roadmap(self):