From db7e030a1fbc62981b1be2a7dd16d746f9ed898a Mon Sep 17 00:00:00 2001 From: n07070 Date: Wed, 3 Jun 2026 23:53:02 +0200 Subject: [PATCH] Remove printer import, remove vendor&device configuration, update print_queue --- src/main.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main.py b/src/main.py index 619a627..75b5cff 100644 --- a/src/main.py +++ b/src/main.py @@ -36,7 +36,6 @@ import werkzeug.exceptions from flask_socketio import SocketIO from flask_limiter import Limiter from flask_limiter.util import get_remote_address -from printer import Printer # The wrapper for the printer class from raspberry import Raspberry # The Raspberry pi control Class from web import Web # Wrapper for the web routes and API from print_queue import PrintQueue @@ -73,11 +72,7 @@ except OSError as e: app.logger.debug("Config file loaded !") -# Define the USB connections here. -vendor_id = configuration_file["printer"]["vendor_id"] -device_id = configuration_file["printer"]["device_id"] UPLOAD_FOLDER = str(configuration_file["printer"]["upload_folder"]) - try: os.mkdir(UPLOAD_FOLDER) app.logger.debug("Directory %s created successfully.", UPLOAD_FOLDER) @@ -98,13 +93,12 @@ app.config["ALLOWED_EXTENSIONS"] = ALLOWED_EXTENSIONS app.config["MAX_CONTENT_LENGTH"] = 10 * 1000 * 1000 # Maximum 3Mb for a file upload app.config["TEMPLATES_AUTO_RELOAD"] = True -# Printer connection -# Uses the class defined in the printer.py file -printer = Printer(app, 0x04B8, 0x0E28) +# Queue creation +print_queue = PrintQueue(app) # Find out if we are running on a Raspberry Pi rpi = Raspberry( - printer, + print_queue, app, socketio, configuration_file["rpi"]["button_gpio_port_number"], @@ -112,18 +106,20 @@ rpi = Raspberry( configuration_file["rpi"]["flash_gpio_port_number"], configuration_file["rpi"]["flash"], ) - RASPBERRY_PI_CONNECTED = rpi.is_raspberry_pi() -# Queue creation -print_queue = PrintQueue(app) # Web & API management web = Web(app, print_queue) # Start worker thread -worker = PrintWorker(app, print_queue, printer, socketio) -worker.start() +# When created, the worker will try to find printers connected to the system +try: + worker = PrintWorker(app, print_queue, socketio) + worker.start() +except Exception as e: + app.logger.error("Could not start the worker because %s ", str(e)) + sys.exit(-1) # The rate limit limiter = Limiter( @@ -303,6 +299,7 @@ def api_print_image(): return "OK", 200 +# TODO: This might not depend on the Raspberry Pi @app.route("/api/camera/picture", methods=["GET"]) def camera_picture(): """Returns a picture taken by the camera on a raspberry pi""" @@ -320,6 +317,10 @@ def api_queue_status(): """API endpoint for entire queue""" return jsonify(web.get_queue_state()) +@app.route("/api/queue/completed", methods=["GET"]) +def api_queue_completed(): + """API endpoint that returns the finished tasks""" + return jsonify(web.get_queue_completed()) @app.route("/api/worker", methods=["GET"]) def api_worker_state():