def render_post(self, request): station_name = request.payload.decode('UTF-8') stations = Station.search_by_name(station_name) if len(station_name) < 4: payload = 'Search string to short' if len(station_name) == 0: payload = 'Missing search string' return aiocoap.Message(code=aiocoap.NOT_FOUND, payload=payload.encode('ascii')) if stations: payload = str([s['name'] for s in stations]) for station in stations: if station['name'] == station_name: stations = [station] if len(stations) == 1: station = stations[0] dep = Departures(station.get_stops()) dep.refresh() payload = json.dumps(dep, ensure_ascii=False, default=json_serializer.default) else: return aiocoap.Message(code=aiocoap.NOT_FOUND, payload='Station not found'.encode('ascii')) response = aiocoap.Message(code=aiocoap.CONTENT, payload=payload.encode('UTF-8')) response.opt.content_format = aiocoap.numbers.media_types_rev['application/json'] return response
def get(self, name): stations = Station.search_by_name(name, exact=True) rbl = [] for st in stations: rbl += list(st.get_stops()) departures = Departures.get_by_stops(rbl) result_dicts = [] for station in sorted(departures.values(), key=itemgetter('name')): for departure in sorted(station['departures'], key=itemgetter('countdown')): result_dicts.append(departure) return result_dicts
def get(self, name): stations = Station.search_by_name(name, exact=True) rbl = [] for st in stations: rbl += list(st.get_stops()) departures = Departures.get_by_stops(rbl) result_dicts = [] for station in sorted(departures.values(), key=itemgetter('name')): for departure in sorted(station['departures'], key=itemgetter('countdown')): if not departure['line']['colour']: departure['line']['colour'] = 'transparent' result_dicts.append(departure) return result_dicts
def get(self, term): stations = Station.search_by_name(term, weight='line_count') return [x['name'] for x in stations]
def get_nearby(self, lat, lon, distance=0.007): return sorted([ _distance(s, lat, lon) for s in Station.get_nearby(lat, lon, distance) ], key=lambda s: s['distance'])
from pyWL.database import Station, Line from pyWL.textformat import * parser = argparse.ArgumentParser(description='WienerLinien test commandline client') parser.add_argument(metavar='station name', dest='name') group = parser.add_mutually_exclusive_group(required=True) group.add_argument('-s', '--search', action='store_true', help='search station by name', dest='search') group.add_argument('-d', '--departures', action='store_true', help='show departures', dest='deps') group.add_argument('-l', '--line', action='store_true', help='show stations', dest='line') args = parser.parse_args() stations = Station.search_by_name(args.name, weight='line_count') if args.search: for station in map(lambda x: x['name'], stations): print(station) if args.line: name = args.name.upper() l = Line.get_by_name(name) if l is None: s = Line.search_by_name(name) print('Line not found') if s: print('Did you mean:') for line in s:
def get_nearby(self, lat, lon, distance=0.005): return sorted([_distance(s, lat, lon) for s in Station.get_nearby(lat, lon, distance)], key=lambda s: s['distance'])