Lepsi stahovani informaci o pocasi
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
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
|
||||
Reference in New Issue
Block a user