alkator/get_invoices.py
2024-10-02 18:48:04 +02:00

29 lines
832 B
Python

from datetime import date, datetime, timedelta
from django.template.response import TemplateResponse
from alkatorapi.models import User
from xhtml2pdf import pisa
from weasyprint import HTML
from pypdf import PdfWriter
import asyncio
def html_to_pdf(html_content, output_path):
HTML(string=html_content).write_pdf(output_path)
merger = PdfWriter()
for user in User.objects.all().order_by('last_name', 'first_name'):
template = TemplateResponse(
None,
'invoice.html',
{
'user': user,
'paid_date': user.register_date + timedelta(days=1),
}
)
template.render()
pdf_name = f"{user.last_name}_{user.first_name}.pdf"
html_to_pdf(template.content, pdf_name)
merger.append(pdf_name)
merger.write('result.pdf')
merger.close()