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