コード例 #1
0
ファイル: test_web.py プロジェクト: TDD-AY/TDD-Project
def test_delete_route_by_id(client):
    
    #Create a route
    coordinates1=[{"longitude":2.2,"latitude":3.5,"datetime": 34676},{"longitude":6.8,"latitude":7.4,"datetime": 47580}]
    
    Ruta.create(
        user= USER_ID1, 
        message = MESSAGE_ID1, 
        date = datetime.now(), 
        trajectory = coordinates1
    )

    client.post(f'/api/v1/{USER_ID1}/route/{MESSAGE_ID1}')
    assert Ruta.get_or_none(message = MESSAGE_ID1 )==None 
コード例 #2
0
def get_route_by_id(user_id, route_id):
    """
    Retrieve a route by it's id. Here we take user_id to ensure that 
    not anyone can access the route_id. At least you need to know the
    user_id
    """

    if request.method == 'GET':
        r = Ruta.get_or_none(message=route_id)
        if r != None:
            return jsonify({
                "distance_total": r.distance,
                "time": r.time,
                "date": r.date,
            })
        else:
            return jsonify({})
    elif request.method == 'POST':
        ruta = Ruta.get_or_none(message=route_id)
        if (ruta != None) and (ruta.user == user_id):
            Ruta.delete().where(Ruta.message == route_id).execute()
            return "Deleted"

        return "Doesn't exist"
コード例 #3
0
def store_location(user_id: int, m_id: int,
                   position_data: Dict[str, Union[float, int]]):
    """
    Store the trayectory point and time (position_data) produced by an user (user_id) in a message (m_id)
    """

    if ("longitude" in position_data.keys()) and (
            "latitude" in position_data.keys()) and ("datetime"
                                                     in position_data.keys()):
        correct_types = type(position_data.get("longitude")) == float
        correct_types = correct_types and type(
            position_data.get("latitude")) == float
        correct_types = correct_types and type(
            position_data.get("datetime")) == int
        if correct_types:
            ruta = Ruta.get_or_none(message=m_id)

            if ruta:
                ruta.trajectory.append(position_data)

                if len(ruta.trajectory) >= 2:
                    current_position = tuple([
                        position_data.get("longitude"),
                        position_data.get("latitude")
                    ])
                    previous_position = tuple([
                        ruta.trajectory[-2].get("longitude"),
                        ruta.trajectory[-2].get("latitude")
                    ])
                    ruta.distance += haversine(previous_position,
                                               current_position)
                    ruta.time += position_data.get(
                        "datetime") - ruta.trajectory[-2].get("datetime")

                ruta.save()
            else:
                Ruta.create(
                    user=user_id,
                    message=m_id,
                    date=datetime.now(),
                    trajectory=[position_data],
                    time=0,
                    distance=0.0,
                )
        else:
            raise InvalidEntry("Invalid type for position_data")
    else:
        raise InvalidEntry("latitude or longitude not in the keys")