mirror of
https://github.com/MarcZierle/photo-log-backend.git
synced 2025-01-04 05:37:58 +00:00
64 lines
1.8 KiB
Python
Executable File
64 lines
1.8 KiB
Python
Executable File
from photo_log.models import Photo
|
|
|
|
import os
|
|
|
|
from django_tex.shortcuts import render_to_pdf, compile_template_to_pdf
|
|
from django.db.models import FileField
|
|
from django.conf import settings
|
|
|
|
from .photolog_layout import generate_tex
|
|
|
|
|
|
def get_img_path_by_id(photo_id):
|
|
if not photo_id:
|
|
return None
|
|
photo = Photo.objects.get(id=photo_id)
|
|
img = None
|
|
if not photo.cropped_image.name:
|
|
img = photo.original_image.url
|
|
else:
|
|
img = photo.cropped_image.url
|
|
return img
|
|
|
|
|
|
def get_all_photo_paths(slides, start_slide_image):
|
|
id_to_path = {}
|
|
image_paths = []
|
|
for slide in slides:
|
|
for photo_id in slide:
|
|
if photo_id == None:
|
|
continue
|
|
|
|
if not photo_id in id_to_path:
|
|
path = get_img_path_by_id(photo_id)
|
|
id_to_path[photo_id] = path
|
|
|
|
image_paths.append(id_to_path[photo_id])
|
|
|
|
start_slide_photo = get_img_path_by_id(start_slide_image)
|
|
if not start_slide_image in id_to_path:
|
|
path = get_img_path_by_id(start_slide_image)
|
|
id_to_path[start_slide_image] = path
|
|
|
|
if start_slide_photo and not start_slide_photo in image_paths:
|
|
image_paths.append(start_slide_photo)
|
|
|
|
id_to_name = {}
|
|
for id in id_to_path:
|
|
id_to_name[id], _ = os.path.splitext(os.path.basename(id_to_path[id]))
|
|
|
|
return image_paths, id_to_name
|
|
|
|
|
|
def generate_photolog_from_latex(request, title, date, render_date, start_slide_image, slides):
|
|
image_paths, id_to_name = get_all_photo_paths(slides, start_slide_image)
|
|
|
|
template_name = 'photolog.tex'
|
|
context = {
|
|
'content': generate_tex(title, date, render_date, start_slide_image, slides, id_to_name)
|
|
}
|
|
|
|
pdf_bytes = compile_template_to_pdf(template_name, context)
|
|
|
|
return pdf_bytes
|