32 lines
1.3 KiB
Python
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
|