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
