order and api and more
This commit is contained in:
@ -27,6 +27,13 @@ class LabelPrinterService:
|
||||
self._session = None
|
||||
self._lock = asyncio.Lock()
|
||||
|
||||
async def cleanup(self):
|
||||
"""Clean up resources, particularly the aiohttp session."""
|
||||
if self._session:
|
||||
await self._session.close()
|
||||
self._session = None
|
||||
logger.info("Label printer service session closed")
|
||||
|
||||
@asynccontextmanager
|
||||
async def _get_session(self):
|
||||
"""Context manager for aiohttp session."""
|
||||
@ -64,8 +71,16 @@ class LabelPrinterService:
|
||||
elif response.status == 404:
|
||||
logger.error(f"Printer status endpoint not found at {self.status_url}")
|
||||
return False
|
||||
elif response.status == 500:
|
||||
data = await response.json()
|
||||
error_msg = data.get('message', 'Unknown printer error')
|
||||
logger.error(f"Printer error: {error_msg}")
|
||||
raise Exception(f"Printer error: {error_msg}")
|
||||
except aiohttp.ClientError as e:
|
||||
logger.warning(f"Error checking printer status: {e}")
|
||||
if "Cannot connect to host" in str(e):
|
||||
logger.error("Printer reciever is not available")
|
||||
raise Exception("Printer reciever is not available")
|
||||
except Exception as e:
|
||||
logger.error(f"Unexpected error in _wait_for_printer_ready: {e}")
|
||||
return False
|
||||
@ -109,6 +124,11 @@ class LabelPrinterService:
|
||||
elif response.status == 429:
|
||||
logger.error("Printer is busy")
|
||||
return False
|
||||
elif response.status == 500:
|
||||
data = await response.json()
|
||||
error_msg = data.get('message', 'Unknown printer error')
|
||||
logger.error(f"Printer error: {error_msg}")
|
||||
raise Exception(f"Printer error: {error_msg}")
|
||||
else:
|
||||
data = await response.json()
|
||||
logger.error(f"Print request failed with status {response.status}: {data.get('message')}")
|
||||
@ -121,13 +141,13 @@ class LabelPrinterService:
|
||||
logger.error(f"Unexpected error in _send_print_request: {e}")
|
||||
return False
|
||||
|
||||
async def print_file(self, file_path: Union[str, Path], label_size: Literal["dk1201", "dk1241"], label_type: Optional[Literal["address_label", "packing_slip"]] = None) -> bool:
|
||||
async def print_file(self, file_path: Union[str, Path], label_size: Literal["dk1201", "dk1241"], label_type: Optional[Literal["address_label", "packing_slip", "set_label"]] = None) -> bool:
|
||||
"""Print a PDF or PNG file to the label printer.
|
||||
|
||||
Args:
|
||||
file_path: Path to the PDF or PNG file
|
||||
label_size: Size of label to use ("dk1201" or "dk1241")
|
||||
label_type: Type of label to use ("address_label" or "packing_slip")
|
||||
label_type: Type of label to use ("address_label" or "packing_slip" or "set_label")
|
||||
|
||||
Returns:
|
||||
bool: True if print was successful, False otherwise
|
||||
@ -177,14 +197,16 @@ class LabelPrinterService:
|
||||
resized_image = resized_image.resize((1660, 1164), Image.Resampling.LANCZOS)
|
||||
else:
|
||||
resized_image = resized_image.resize((1164, 1660), Image.Resampling.LANCZOS)
|
||||
elif original_label_size == "dk1201" and label_type == "address_label":
|
||||
elif original_label_size == "dk1201":
|
||||
resized_image = resized_image.resize((991, 306), Image.Resampling.LANCZOS)
|
||||
|
||||
# if file path contains address_label, rotate image 90 degrees
|
||||
if label_type == "address_label":
|
||||
if label_type == "address_label" or label_type == "set_label":
|
||||
rotate = "90"
|
||||
cut = False
|
||||
else:
|
||||
rotate = "0"
|
||||
cut = True
|
||||
|
||||
# Convert to label format
|
||||
qlr = BrotherQLRaster("QL-1100")
|
||||
@ -205,7 +227,7 @@ class LabelPrinterService:
|
||||
dpi_600=False,
|
||||
#hq=True,
|
||||
hq=False,
|
||||
cut=True
|
||||
cut=cut
|
||||
)
|
||||
|
||||
# Cache the converted binary data
|
||||
|
Reference in New Issue
Block a user