예제 #1
0
def _finish_session():
    session_id = _parse_session_id()
    session = TrackingSession.by_lt24_id(session_id)
    if session is None:
        raise NotFound(
            "No open tracking session found with id `{:d}`.".format(session_id)
        )

    session.time_finished = datetime.utcnow()
    session.ip_finished = request.remote_addr

    # Pilot status
    if "prid" in request.values:
        try:
            finish_status = int(request.values["prid"])
            if not (0 <= finish_status <= 4):
                raise ValueError()

            session.finish_status = finish_status

        except ValueError:
            raise BadRequest("`prid` must be an integer between 0 and 4.")

    db.session.commit()
    return "OK"
예제 #2
0
def _session_fix():
    session_id = _parse_session_id()
    session = TrackingSession.by_lt24_id(session_id)
    if session is None:
        raise NotFound('No open tracking session found with id `{:d}`.'.format(session_id))

    fix = _parse_fix(session.pilot_id)
    db.session.add(fix)
    db.session.commit()
    return 'OK'
예제 #3
0
def _session_fix():
    session_id = _parse_session_id()
    session = TrackingSession.by_lt24_id(session_id)
    if session is None:
        raise NotFound('No open tracking session found with id `{d}`.'.format(session_id))

    fix = _parse_fix(session.pilot_id)
    db.session.add(fix)
    db.session.commit()
    return 'OK'
예제 #4
0
def _create_session():
    key, pilot = _parse_user()
    if not pilot:
        raise NotFound('No pilot found with tracking key `{:X}`.'.format(key))

    session_id = _parse_session_id()

    if session_id & 0x00FFFFFF != key & 0x00FFFFFF:
        raise BadRequest('The right three bytes must match the userid (tracking key).')

    session = TrackingSession()
    session.pilot = pilot
    session.lt24_id = session_id
    session.ip_created = request.remote_addr

    # Client application
    if 'client' in request.values:
        session.client = request.values['client'][:32]
    if 'v' in request.values:
        session.client_version = request.values['v'][:8]

    # Device information
    if 'phone' in request.values:
        session.device = request.values['phone'][:32]
    if 'gps' in request.values:
        session.gps_device = request.values['gps'][:32]

    # Aircraft model and type
    if 'vname' in request.values:
        session.aircraft_model = request.values['vname'][:64]
    if 'vtype' in request.values:
        try:
            session.aircraft_type = int(request.values['vtype'])
        except ValueError:
            raise BadRequest('`vtype` has to be a valid integer.')

    db.session.add(session)
    db.session.commit()
    return 'OK'
예제 #5
0
def _create_session():
    key, pilot = _parse_user()
    if not pilot:
        raise NotFound("No pilot found with tracking key `{:X}`.".format(key))

    session_id = _parse_session_id()

    if session_id & 0x00FFFFFF != key & 0x00FFFFFF:
        raise BadRequest("The right three bytes must match the userid (tracking key).")

    session = TrackingSession()
    session.pilot = pilot
    session.lt24_id = session_id
    session.ip_created = request.remote_addr

    # Client application
    if "client" in request.values:
        session.client = request.values["client"][:32]
    if "v" in request.values:
        session.client_version = request.values["v"][:8]

    # Device information
    if "phone" in request.values:
        session.device = request.values["phone"][:32]
    if "gps" in request.values:
        session.gps_device = request.values["gps"][:32]

    # Aircraft model and type
    if "vname" in request.values:
        session.aircraft_model = request.values["vname"][:64]
    if "vtype" in request.values:
        try:
            session.aircraft_type = int(request.values["vtype"])
        except ValueError:
            raise BadRequest("`vtype` has to be a valid integer.")

    db.session.add(session)
    db.session.commit()
    return "OK"
예제 #6
0
def _finish_session():
    session_id = _parse_session_id()
    session = TrackingSession.by_lt24_id(session_id)
    if session is None:
        raise NotFound('No open tracking session found with id `{d}`.'.format(session_id))

    session.time_finished = datetime.utcnow()
    session.ip_finished = request.remote_addr

    # Pilot status
    if 'prid' in request.values:
        try:
            finish_status = int(request.values['prid'])
            if not (0 <= finish_status <= 4):
                raise ValueError()

            session.finish_status = finish_status

        except ValueError:
            raise BadRequest('`prid` must be an integer between 0 and 4.')

    db.session.commit()
    return 'OK'
예제 #7
0
def _create_session():
    key, pilot = _parse_user()
    if not pilot:
        raise NotFound('No pilot found with tracking key `{:X}`.'.format(key))

    session_id = _parse_session_id()

    if session_id & 0x00FFFFFF != key & 0x00FFFFFF:
        raise BadRequest(
            'The right three bytes must match the userid (tracking key).')

    session = TrackingSession()
    session.pilot = pilot
    session.lt24_id = session_id
    session.ip_created = request.remote_addr

    # Client application
    if 'client' in request.values:
        session.client = request.values['client'][:32]
    if 'v' in request.values:
        session.client_version = request.values['v'][:8]

    # Device information
    if 'phone' in request.values:
        session.device = request.values['phone'][:32]
    if 'gps' in request.values:
        session.gps_device = request.values['gps'][:32]

    # Aircraft model and type
    if 'vname' in request.values:
        session.aircraft_model = request.values['vname'][:64]
    if 'vtype' in request.values:
        try:
            session.aircraft_type = int(request.values['vtype'])
        except ValueError:
            raise BadRequest('`vtype` has to be a valid integer.')

    db.session.add(session)
    db.session.commit()
    return 'OK'
예제 #8
0
def _create_session():
    key, pilot = _parse_user()
    if not pilot:
        raise NotFound("No pilot found with tracking key `{:X}`.".format(key))

    session_id = _parse_session_id()

    if session_id & 0x00FFFFFF != key & 0x00FFFFFF:
        raise BadRequest(
            "The right three bytes must match the userid (tracking key).")

    session = TrackingSession()
    session.pilot = pilot
    session.lt24_id = session_id
    session.ip_created = request.remote_addr

    # Client application
    if "client" in request.values:
        session.client = request.values["client"][:32]
    if "v" in request.values:
        session.client_version = request.values["v"][:8]

    # Device information
    if "phone" in request.values:
        session.device = request.values["phone"][:32]
    if "gps" in request.values:
        session.gps_device = request.values["gps"][:32]

    # Aircraft model and type
    if "vname" in request.values:
        session.aircraft_model = request.values["vname"][:64]
    if "vtype" in request.values:
        try:
            session.aircraft_type = int(request.values["vtype"])
        except ValueError:
            raise BadRequest("`vtype` has to be a valid integer.")

    db.session.add(session)
    db.session.commit()
    return "OK"