data init idk other stuff

This commit is contained in:
2025-04-18 15:19:57 -04:00
parent 8f35cedb4a
commit 03b43ce3ab
28 changed files with 3378 additions and 810 deletions

View File

@ -1,12 +1,19 @@
from fastapi import APIRouter, HTTPException, Depends, Query
from fastapi import APIRouter, HTTPException, Depends, Query, UploadFile, File
from typing import List
from datetime import datetime
from enum import Enum
from app.schemas.tcgplayer import TCGPlayerAPIOrderSummary, TCGPlayerAPIOrder
from app.schemas.generate import GenerateRequest, GenerateAddressLabelsRequest, GeneratePackingSlipsRequest, GeneratePullSheetsRequest, GenerateResponse
from app.schemas.generate import GenerateAddressLabelsRequest, GeneratePackingSlipsRequest, GeneratePullSheetsRequest, GenerateResponse, GenerateReturnLabelsRequest
from app.schemas.file import FileUpload
from app.services.service_manager import ServiceManager
from app.services.file_service import FileService
from sqlalchemy.orm import Session
from app.db.database import get_db
import os
import tempfile
import logging
logger = logging.getLogger(__name__)
class SearchRange(str, Enum):
@ -153,3 +160,66 @@ async def generate_address_labels(
return {"success": False, "message": "Address labels not found"}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Failed to generate address labels: {str(e)}")
@router.post("/generate-return-labels")
async def generate_return_labels(
request: GenerateReturnLabelsRequest,
db: Session = Depends(get_db)
) -> GenerateResponse:
"""
Generate and print return labels for the specified number of labels.
Args:
request: Dictionary containing:
- number_of_labels: Number of return labels to generate
"""
try:
label_printer = service_manager.get_service('label_printer')
success = await label_printer.print_file("app/data/assets/images/ccrcardsaddress.png", label_size="dk1201", label_type="return_label", copies=request.number_of_labels)
return {"success": success, "message": "Return labels generated and printed successfully"}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Failed to generate return labels: {str(e)}")
@router.post("/print-pirate-ship-label")
async def print_pirate_ship_label(
file: UploadFile = File(...),
db: Session = Depends(get_db)
) -> GenerateResponse:
"""
Print a PDF file uploaded via the API.
Args:
file: The PDF file to print
Returns:
Success status of the operation
"""
try:
# Read the file content
content = await file.read()
# Store the file using FileService
file_service = service_manager.get_service('file')
stored_file = await file_service.save_file(
db=db,
file_data=content,
filename=file.filename,
subdir="pirate_ship_labels",
file_type="pdf",
content_type=file.content_type,
metadata={"filename": file.filename}
)
try:
# Use the label printer service to print the file
label_printer = service_manager.get_service('label_printer')
success = await label_printer.print_file(stored_file, label_size="dk1241", label_type="pirate_ship_label")
return {"success": success, "message": "Pirate Ship label printed successfully"}
except Exception as e:
# If printing fails, we'll keep the file in storage for potential retry
logger.error(f"Failed to print file: {str(e)}")
raise e
except Exception as e:
raise HTTPException(status_code=500, detail=f"Failed to print Pirate Ship label: {str(e)}")