Tests de PDFs con Minio los pdfs se guardan una sola vez ahora

This commit is contained in:
2025-11-24 16:59:07 -03:00
parent de5900a4ab
commit 7788e869db
5 changed files with 98 additions and 7 deletions

View File

@@ -1,9 +1,13 @@
import os
# Variables de conexión S3/MinIO
MINIO_ENDPOINT = os.getenv('MINIO_ENDPOINT', 'http://localhost:9000')
MINIO_HOST = os.getenv('MINIO_HOST', 'localhost')
MINIO_SECURE = os.getenv('MINIO_SECURE', 'false').lower() == 'true'
MINIO_PORT = int(os.getenv('MINIO_PORT', '9000'))
MINIO_ACCESS_KEY = os.getenv('MINIO_ACCESS_KEY', 'minioadmin')
MINIO_SECRET_KEY = os.getenv('MINIO_SECRET_KEY', 'minioadmin')
MINIO_IMAGE_BUCKET = os.getenv('MINIO_IMAGE_BUCKET', 'images')
MINIO_PDF_BUCKET = os.getenv('MINIO_PDF_BUCKET', 'pdfs')
MINIO_ENDPOINT = f"{'https' if MINIO_SECURE else 'http'}://{MINIO_HOST}:{MINIO_PORT}"
from pydantic_settings import BaseSettings
class Settings(BaseSettings):

View File

@@ -8,12 +8,13 @@ import os
import boto3
from botocore.client import Config
import uuid
from app.core import config as app_config
# S3/MinIO configuration
S3_ENDPOINT = os.getenv('MINIO_ENDPOINT', 'http://localhost:9000')
S3_ACCESS_KEY = os.getenv('MINIO_ACCESS_KEY', 'minioadmin')
S3_SECRET_KEY = os.getenv('MINIO_SECRET_KEY', 'minioadmin')
S3_IMAGE_BUCKET = os.getenv('MINIO_IMAGE_BUCKET', 'images')
S3_PDF_BUCKET = os.getenv('MINIO_PDF_BUCKET', 'pdfs')
S3_ENDPOINT = app_config.MINIO_ENDPOINT
S3_ACCESS_KEY = app_config.MINIO_ACCESS_KEY
S3_SECRET_KEY = app_config.MINIO_SECRET_KEY
S3_IMAGE_BUCKET = app_config.MINIO_IMAGE_BUCKET
S3_PDF_BUCKET = app_config.MINIO_PDF_BUCKET
s3_client = boto3.client(
's3',
@@ -1696,14 +1697,17 @@ def export_inspection_to_pdf(
# ...existing code for PDF generation...
doc.build(elements)
buffer.seek(0)
# Guardar localmente para depuración
with open(f"/tmp/test_inspeccion_{inspection_id}.pdf", "wb") as f:
f.write(buffer.getvalue())
now = datetime.now()
folder = f"{now.year}/{now.month:02d}"
filename = f"inspeccion_{inspection_id}_{inspection.vehicle_plate or 'sin-patente'}.pdf"
s3_key = f"{folder}/{filename}"
# Subir PDF a S3/MinIO
buffer.seek(0) # Asegura que el puntero esté al inicio
s3_client.upload_fileobj(buffer, S3_PDF_BUCKET, s3_key, ExtraArgs={"ContentType": "application/pdf"})
pdf_url = f"{S3_ENDPOINT}/{S3_PDF_BUCKET}/{s3_key}"
# Guardar pdf_url en la inspección
inspection.pdf_url = pdf_url
db.commit()
return {"pdf_url": pdf_url}