Files
api/src/utils/flight_plan_helpers.py
T

32 lines
1.3 KiB
Python

from datetime import datetime, timedelta
from fastapi import BackgroundTasks
from background_jobs.weather import download_weather_for_plan_marker
from database import models
from utils.gps import get_distance
async def refresh_markers_weather_info(
planned_takeoff_datetime: datetime, planned_speed: float,
markers: list[models.FlightPlanMarker], background_tasks: BackgroundTasks
):
if not planned_takeoff_datetime:
return
marker_date_time = planned_takeoff_datetime
previous_marker = markers[0] if markers else None
for marker in markers:
if marker_date_time:
# TODO: tohle by se melo volat i v pripade zmeny planovaneho casu vzletu i planovane rychlosti
distance_from_prev = get_distance(
a=(previous_marker.gps_latitude, previous_marker.gps_longitude),
b=(marker.gps_latitude, marker.gps_longitude)
)
time_from_prev_sec = distance_from_prev / planned_speed * 3600 # pracuji v km/h
marker_date_time = marker_date_time + timedelta(seconds=time_from_prev_sec)
background_tasks.add_task(
download_weather_for_plan_marker,
marker_id=marker.id, date_time=marker_date_time
)
previous_marker = marker