data init idk other stuff
This commit is contained in:
@ -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)}")
|
||||
|
Reference in New Issue
Block a user