Fix generovani titulni fotky pro og:image
This commit is contained in:
@@ -8,13 +8,13 @@ from external.elevation import elevation_api, update_track_points_elevation
|
||||
@retryable
|
||||
async def add_terrain_elevation_to_flight(flight_id: int):
|
||||
async with get_session() as db:
|
||||
track_points = (
|
||||
await db.scalars(
|
||||
track_points = (await db.scalars(
|
||||
select(models.TrackPoint)
|
||||
.join(models.TrackPoint.track)
|
||||
.join(models.Track.flight)
|
||||
.filter(models.Flight.id == flight_id))
|
||||
).all()
|
||||
.filter(models.Flight.id == flight_id)
|
||||
.filter(models.TrackPoint.terrain_elevation.is_(None))
|
||||
)).all()
|
||||
await update_track_points_elevation(db, track_points)
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
from PIL import Image, ImageDraw, ImageOps
|
||||
from sqlalchemy import select
|
||||
|
||||
from database import models
|
||||
from database.transaction import get_session
|
||||
|
||||
|
||||
async def add_circular_avatar(base_image_path, avatar_image_path, output_image_path):
|
||||
@@ -56,3 +60,23 @@ async def add_circular_avatar(base_image_path, avatar_image_path, output_image_p
|
||||
|
||||
# Save the result
|
||||
base_image.save(output_image_path)
|
||||
|
||||
|
||||
async def generate_flight_title_photo(flight_id: int, photo_id: int):
|
||||
async with get_session() as db:
|
||||
photo = await models.Photo.get_one(db, id=photo_id)
|
||||
pilot = (await db.scalars(
|
||||
select(models.User)
|
||||
.select_from(models.Flight)
|
||||
.join(models.Flight.created_by)
|
||||
.filter(models.Flight.id == flight_id)
|
||||
)).one()
|
||||
|
||||
photo_filename, photo_ext = photo.filename, photo.filename_extension
|
||||
pilot_id, avatar_filename = pilot.id, pilot.avatar_image_filename
|
||||
|
||||
await add_circular_avatar(
|
||||
base_image_path=f'/app/uploads/photos/{flight_id}/{photo_filename}.{photo_ext}',
|
||||
avatar_image_path=f'/app/uploads/profile/{pilot_id}/{avatar_filename}',
|
||||
output_image_path=f'/app/uploads/photos/{flight_id}/title_photo.jpg',
|
||||
)
|
||||
|
||||
@@ -4,6 +4,7 @@ from typing import Optional
|
||||
from sqlalchemy import delete, insert
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from background_jobs.elevation import add_terrain_elevation_to_flight
|
||||
from background_jobs.flight_title_photo import add_circular_avatar, generate_flight_title_photo
|
||||
from utils.flight_track_helpers import handle_upload_gpx, save_track_from_gpx_to_db, extract_basic_flight_info_from_gpx
|
||||
from background_jobs.weather import download_weather_for_flight
|
||||
from database import models
|
||||
@@ -179,6 +180,12 @@ class FlightMutationResolver(BaseMutationResolver):
|
||||
|
||||
def schedule_background_tasks(flight_id: int, flight_data: dict, context) -> None:
|
||||
context.background_tasks.add_task(add_terrain_elevation_to_flight, flight_id=flight_id)
|
||||
|
||||
if flight_data.get("title_photo_id"):
|
||||
context.background_tasks.add_task(
|
||||
generate_flight_title_photo, flight_id=flight_id, photo_id=flight_data['title_photo_id']
|
||||
)
|
||||
|
||||
if flight_data.get("takeoff_airport_id"):
|
||||
context.background_tasks.add_task(
|
||||
download_weather_for_flight, flight_id=id, airport_id=flight_data['takeoff_airport_id'],
|
||||
|
||||
Reference in New Issue
Block a user