Add notes API only
This commit is contained in:
@@ -133,6 +133,17 @@ class LabelPrintResponse(BaseModel):
|
|||||||
success: bool
|
success: bool
|
||||||
message: str
|
message: str
|
||||||
|
|
||||||
|
class NotesVariables(BaseModel):
|
||||||
|
animal_name: str
|
||||||
|
notes: str
|
||||||
|
|
||||||
|
class NotesPrintRequest(BaseModel):
|
||||||
|
variables: NotesVariables
|
||||||
|
|
||||||
|
class NotesPrintResponse(BaseModel):
|
||||||
|
success: bool
|
||||||
|
message: str
|
||||||
|
|
||||||
# Authentication Routes
|
# Authentication Routes
|
||||||
@router.post("/auth/register", response_model=TokenResponse)
|
@router.post("/auth/register", response_model=TokenResponse)
|
||||||
def register(user_data: UserCreate, db: Session = Depends(get_db)):
|
def register(user_data: UserCreate, db: Session = Depends(get_db)):
|
||||||
@@ -575,5 +586,66 @@ def print_label(label_request: LabelPrintRequest, current_user: User = Depends(g
|
|||||||
detail=f"Error sending label print request: {str(e)}"
|
detail=f"Error sending label print request: {str(e)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Notes printing endpoint
|
||||||
|
@router.post("/notes/print", response_model=NotesPrintResponse)
|
||||||
|
def print_notes(notes_request: NotesPrintRequest, current_user: User = Depends(get_current_user)):
|
||||||
|
"""
|
||||||
|
Print notes by publishing an MQTT message
|
||||||
|
|
||||||
|
This endpoint publishes a notes print request to the MQTT broker,
|
||||||
|
which will be picked up by the label printing service.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Get notes template configuration from environment
|
||||||
|
import os
|
||||||
|
template_id = os.getenv("NOTES_TEMPLATE_ID", "notes_template")
|
||||||
|
label_size = os.getenv("LABEL_SIZE", "29x90")
|
||||||
|
test_mode = os.getenv("LABEL_TEST", "false").lower() == "true"
|
||||||
|
|
||||||
|
# Capitalize text fields for better presentation
|
||||||
|
variables = notes_request.variables.dict()
|
||||||
|
variables["animal_name"] = capitalize_label_text(variables["animal_name"])
|
||||||
|
variables["notes"] = capitalize_label_text(variables["notes"])
|
||||||
|
|
||||||
|
# Convert the request to the MQTT message format
|
||||||
|
mqtt_message = {
|
||||||
|
"template_id": template_id,
|
||||||
|
"label_size": label_size,
|
||||||
|
"variables": variables,
|
||||||
|
"test": test_mode
|
||||||
|
}
|
||||||
|
|
||||||
|
# Publish to MQTT and wait for response
|
||||||
|
success, response = publish_label_print_with_response(mqtt_message, timeout=10.0)
|
||||||
|
|
||||||
|
print(f"Notes print result: success={success}, response={response}")
|
||||||
|
|
||||||
|
if success:
|
||||||
|
result = NotesPrintResponse(
|
||||||
|
success=True,
|
||||||
|
message=response.get("message", "Notes printed successfully")
|
||||||
|
)
|
||||||
|
print(f"Returning success response: {result}")
|
||||||
|
return result
|
||||||
|
else:
|
||||||
|
# Return error details from printer
|
||||||
|
# Check both 'message' and 'error' fields for error details
|
||||||
|
if response:
|
||||||
|
error_msg = response.get("message") or response.get("error", "Unknown error")
|
||||||
|
else:
|
||||||
|
error_msg = "No response from printer"
|
||||||
|
result = NotesPrintResponse(
|
||||||
|
success=False,
|
||||||
|
message=f"Print failed: {error_msg}"
|
||||||
|
)
|
||||||
|
print(f"Returning error response: {result}")
|
||||||
|
return result
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=500,
|
||||||
|
detail=f"Error sending notes print request: {str(e)}"
|
||||||
|
)
|
||||||
|
|
||||||
# Include router with /api prefix
|
# Include router with /api prefix
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ password_file /mosquitto/config/pwfile
|
|||||||
# Logging
|
# Logging
|
||||||
log_dest stdout
|
log_dest stdout
|
||||||
log_timestamp true
|
log_timestamp true
|
||||||
log_type all
|
#log_type all
|
||||||
|
|
||||||
# Performance
|
# Performance
|
||||||
max_connections -1
|
max_connections -1
|
||||||
|
|||||||
Reference in New Issue
Block a user