Пример #1
0
def mission_loc(filter_missions=False, mission_no=None):
    session = create_session()
    if filter_missions:
        missions = session.query(Missions).filter(
            Missions.Number.notin_(non_uea_mission_numbers)).all()
    elif mission_no:
        missions = session.query(Missions).filter(
            Missions.Number == mission_no)
    else:
        missions = session.query(Missions).all()
    mission_locs = []
    for mission in missions:
        dive = session.query(Dives).filter(
            Dives.MissionID == mission.Number).order_by(
                Dives.DiveNo.asc()).first()
        if dive:
            tgt_template = Targets()
            tgt_template.Longitude = dive.Longitude
            tgt_template.Latitude = dive.Latitude
            tgt_template.Name = mission.Name
            tgt_template.MissionID = mission.Number
            mission_locs.append(tgt_template)
            continue
        target = session.query(Targets).filter(
            Targets.MissionID == mission.Number).first()
        if target:
            target.Name = mission.Number
            mission_locs.append(target)
    session.close()
    return mission_locs
Пример #2
0
def get_glider_count() -> int:
    session = create_session()
    gliders = session.query(Gliders)\
        .filter(Gliders.UEAGlider == 1)\
        .count()
    session.close()
    return gliders
Пример #3
0
def adjacent_dives(glider_num, dive_num, mission_num):
    session = create_session()
    glider = session.query(Gliders).filter(
        Gliders.Number == int(glider_num)).first()
    if not glider:
        return None
    glider_id = glider.Number
    prev_dive = session.query(Dives.DiveNo) \
        .filter(Dives.GliderID == glider_id) \
        .filter(Dives.MissionID == mission_num) \
        .filter(Dives.DiveNo < dive_num) \
        .order_by(Dives.DiveNo.desc()) \
        .first()
    session.close()
    if not prev_dive:
        prev_dive = None
    next_dive = session.query(Dives.DiveNo) \
        .filter(Dives.GliderID == glider_id) \
        .filter(Dives.MissionID == mission_num) \
        .filter(Dives.DiveNo > dive_num) \
        .order_by(Dives.DiveNo.asc()) \
        .first()
    session.close()
    if not next_dive:
        next_dive = None
    return prev_dive, next_dive
Пример #4
0
def mission_ids() -> list:
    session = create_session()
    missions = session.query(Missions.Number) \
        .order_by(Missions.Number.desc()) \
        .all()
    session.close()
    return missions
Пример #5
0
def list_tags() -> list:
    session = create_session()
    tags = session.query(ArgosTags) \
        .order_by(ArgosTags.TagNumber.asc()) \
        .all()
    session.close()
    return tags
Пример #6
0
def glider_nums() -> list:
    session = create_session()
    gliders = session.query(Gliders.Number) \
        .order_by(Gliders.Number.desc()) \
        .all()
    session.close()
    return gliders
Пример #7
0
def tag_nums() -> list:
    session = create_session()
    tags = session.query(ArgosTags.TagNumber) \
        .order_by(ArgosTags.TagNumber.desc()) \
        .all()
    session.close()
    return tags
Пример #8
0
def assign_glider(number, mission_id):
    glider, __ = glider_info(number)
    glider.MissionID = mission_id
    session = create_session()
    session.add(glider)
    session.commit()
    session.close()
    return glider
Пример #9
0
def delete_mission(mission_id):
    session = create_session()
    mission = session.query(Missions) \
        .filter(Missions.Number == mission_id) \
        .first()
    session.delete(mission)
    session.commit()
    return mission
Пример #10
0
def delete_dive(dive_id):
    session = create_session()
    dive = session.query(Dives) \
        .filter(Dives.DiveInfoID == dive_id) \
        .first()
    session.delete(dive)
    session.commit()
    return dive
Пример #11
0
def list_all_gliders() -> list:
    session = create_session()
    gliders = session.query(Gliders) \
        .order_by(
        Gliders.Number.asc())\
        .all()
    session.close()
    return gliders
Пример #12
0
def get_mission_by_id(mission_id):
    if not mission_id:
        return None
    session = create_session()
    mission = session.query(Missions).filter(
        Missions.Number == mission_id).first()
    session.close()
    return mission
Пример #13
0
def assign_tag(number, mission_id, glider_id):
    tag = tag_info(number)
    tag.MissionID = mission_id
    tag.GliderID = glider_id
    session = create_session()
    session.add(tag)
    session.commit()
    session.close()
    return tag
Пример #14
0
def delete_glider(glider_num):
    session = create_session()
    target = session.query(Gliders) \
        .filter(Gliders.Number == glider_num) \
        .first()
    session.delete(target)
    session.commit()
    session.close()
    return
Пример #15
0
def delete_pin(pin_id):
    session = create_session()
    pin = session.query(Pins) \
        .filter(Pins.WaypointsID == pin_id) \
        .first()
    session.delete(pin)
    session.commit()
    session.close()
    return pin
Пример #16
0
def delete_target(target_id):
    session = create_session()
    target = session.query(Targets) \
        .filter(Targets.TargetsID == target_id) \
        .first()
    session.delete(target)
    session.commit()
    session.close()
    return target
Пример #17
0
def delete_tag(tag_num):
    session = create_session()
    target = session.query(ArgosTags) \
        .filter(ArgosTags.TagNumber == tag_num) \
        .first()
    session.delete(target)
    session.commit()
    session.close()
    return
Пример #18
0
def get_mission_pins(mission_id) -> Optional[Any]:
    if not mission_id:
        return None
    mission_id = int(mission_id)
    session = create_session()
    pins = session.query(Pins) \
        .filter(Pins.MissionID == mission_id) \
        .all()
    session.close()
    return pins
Пример #19
0
def edit_waypoint_info(waypoint_id, info_txt):
    if not waypoint_id:
        return None
    session = create_session()
    waypoint = session.query(Pins).filter(
        Pins.WaypointsID == waypoint_id).first()
    waypoint.Info = info_txt
    session.commit()
    session.close()
    return
Пример #20
0
def create_tag(number, mission_id, glider_id):
    tag = ArgosTags()
    tag.TagNumber = number
    tag.MissionID = mission_id
    tag.GliderID = glider_id
    session = create_session()
    session.add(tag)
    session.commit()
    session.close()
    return tag
Пример #21
0
def glider_info(glider_num):
    session = create_session()
    glider_instance = session.query(Gliders).filter(
        Gliders.Number == glider_num).first()
    mission_ids_list = []
    for value in session.query(Dives.MissionID) \
            .filter(Dives.GliderID == glider_instance.Number) \
            .distinct():
        mission_ids_list.append(value[0])
    session.close()
    return glider_instance, mission_ids_list
Пример #22
0
def delete_multiple_dives(glider_id):
    dive = None
    session = create_session()
    dives = session.query(Dives) \
        .filter(Dives.MissionID == 1)\
        .filter(Dives.GliderID == glider_id) \
        .all()
    for dive in dives:
        session.delete(dive)
    session.commit()
    return dive
Пример #23
0
def create_waypoint(missionid, name, lat, lon, info):
    session = create_session()
    waypoint = Pins()
    waypoint.MissionID = missionid
    waypoint.Name = name
    waypoint.Latitude = lat
    waypoint.Longitude = lon
    waypoint.Info = info
    session.add(waypoint)
    session.commit()
    session.close()
    return waypoint
Пример #24
0
def create_glider(number, name, info, mission_id, ueaglider):
    glider = Gliders()
    glider.Number = number
    glider.Name = name
    glider.Info = info
    glider.MissionID = mission_id
    glider.UEAGlider = ueaglider
    session = create_session()
    session.add(glider)
    session.commit()
    session.close()
    return glider
Пример #25
0
def create_mission(number, name, start, end, info):

    mission = Missions()
    mission.Number = number
    mission.Name = name
    mission.StartDate = start
    mission.EndDate = end
    mission.Info = info
    session = create_session()
    session.add(mission)
    session.commit()
    session.close()
    return mission
Пример #26
0
def create_target(missionid, name, lat, lon, radius, goto):
    session = create_session()
    target = Targets()
    target.MissionID = missionid
    target.Name = name
    target.Latitude = lat
    target.Longitude = lon
    target.Radius = radius
    target.Goto = goto
    session.add(target)
    session.commit()
    session.close()
    return target
Пример #27
0
def login_user(email: str, password: str) -> Optional[User]:
    session = db_session.create_session()

    user = session.query(User).filter(User.Email == email).first()
    if not user:
        return None
    if not verify_hash(user.HashedPassword, password):
        return None
    user.LastLogin = datetime.now()
    session.add(user)
    session.commit()
    session.close()
    return user
Пример #28
0
def audit_entry(user_id: int, message: str):
    user = find_user_by_id(user_id)
    if not user:
        return None
    audit = Audit()
    audit.UserID = user_id
    audit.Date = datetime.now()
    audit.Info = message

    session = create_session()
    session.add(audit)
    session.commit()
    session.close()
    return audit
Пример #29
0
def list_missions(filter_missions=False, mission_id_list=()) -> dict:
    session = create_session()
    if filter_missions:
        missions = session.query(Missions) \
            .filter(Missions.Number.in_(mission_id_list)) \
            .filter(Missions.Number.notin_(non_uea_mission_numbers)) \
            .order_by(Missions.Number.desc()) \
            .all()
    else:
        missions = session.query(Missions) \
            .filter(Missions.Number.notin_(mission_id_list)) \
            .order_by(Missions.Number.desc()).all()
    session.close()
    return missions
Пример #30
0
def get_dive_nums(glider_num, mission_num):
    session = create_session()
    glider = session.query(Gliders).filter(
        Gliders.Number == int(glider_num)).first()
    if not glider:
        return None
    glider_id = glider.Number
    dives = session.query(Dives.DiveNo) \
        .filter(Dives.GliderID == glider_id) \
        .filter(Dives.MissionID == mission_num) \
        .all()
    session.close()
    if not dives:
        return None
    return dives