Exemplo n.º 1
0
def howfar(request):
    request_data = request.json
    source = str(request_data.get('source')).strip()
    destination = str(request_data.get('destination')).strip()
    results = DBSession.query(Journey).filter(
        Journey.source.ilike(source),
        Journey.destination.ilike(destination))
    if results.count():
        result = results.one()
        distance = result.distance
        duration = result.duration
        link = result.link
    else:
        howfar_info = compute_howfar(source=source,
                                     destination=destination)
        distance = howfar_info['distance']['text']
        duration = howfar_info['duration']['text']
        with transaction.manager:
            journey = Journey(source=source,
                              destination=destination,
                              distance=distance,
                              duration=duration)
            link = journey.link
            DBSession.add(journey)
    return {'source': source,
            'destination': destination,
            'result': {'distance': distance,
                       'duration': duration,
                       'link': link
                       }
            }
Exemplo n.º 2
0
def test_query():
    distance_attributes = compute_howfar(source='Delhi', destination='Bangalore')
    assert isinstance(distance_attributes, dict)
    assert len(distance_attributes) == 3
    assert distance_attributes['status'] == 'OK'

    assert distance_attributes['distance']
    assert distance_attributes['distance']['text']
    distance_in_text = distance_attributes['distance']['text']
    assert isinstance(distance_in_text, unicode)
    assert distance_attributes['distance']['value']
    distance_in_value = distance_attributes['distance']['value']
    assert isinstance(distance_in_value, int)

    assert distance_attributes['duration']
    assert distance_attributes['duration']['text']
    duration_in_text = distance_attributes['duration']['text']
    assert isinstance(duration_in_text, unicode)
    assert distance_attributes['duration']['value']
    duration_in_value = distance_attributes['duration']['value']
    assert isinstance(duration_in_value, int)