From ffb5d55d9e155ddd073ea6101c2d0558bb4c1d12 Mon Sep 17 00:00:00 2001 From: James Dougan Date: Sun, 18 May 2025 23:30:30 +0100 Subject: [PATCH 1/3] Add connection recovery --- jolt/websocket_server.py | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/jolt/websocket_server.py b/jolt/websocket_server.py index cb7aff5..377923e 100644 --- a/jolt/websocket_server.py +++ b/jolt/websocket_server.py @@ -16,18 +16,32 @@ async def connect_to_jams(self): params = {'api_token': jolt.JAMS_API_TOKEN} ws_url = f'{jolt.JAMS_WS_URL}?{urlencode(params)}' - async with websockets.connect(ws_url) as websocket: - print("Connected to JAMS WebSocket server") - self.connected_clients.add(websocket) + while True: try: - while True: - message = await websocket.recv() - response = self.process_incoming_message(message) - if response: - await websocket.send(response) - except websockets.ConnectionClosed: - print("Connection closed by server") - self.connected_clients.remove(websocket) + async with websockets.connect(ws_url) as websocket: + print("Connected to JAMS WebSocket server") + self.connected_clients.add(websocket) + try: + while True: + message = await websocket.recv() + response = self.process_incoming_message(message) + if response: + await websocket.send(response) + except websockets.ConnectionClosed: + print("Connection closed by server") + except Exception as e: + print(f'Error during message handling: {e}') + finally: + self.connected_clients.remove(websocket) + except Exception as e: + print(f'Connection Failed: {e}') + + + # Wait before trying to reconnect + print('Retrying connection in 5 seconds...') + await asyncio.sleep(5) + + async def send_message_to_clients(self, message): if self.connected_clients: From 0a6432e20152c7c20ab8c05564398d59d5b89da5 Mon Sep 17 00:00:00 2001 From: James Dougan Date: Thu, 5 Jun 2025 12:53:33 +0100 Subject: [PATCH 2/3] Add optinal QR url for magic links --- jolt/label.py | 10 ++++++---- jolt/print_queue_handler.py | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/jolt/label.py b/jolt/label.py index ef81421..f3decf0 100644 --- a/jolt/label.py +++ b/jolt/label.py @@ -26,10 +26,12 @@ def load_font(size, font_path=FONT_PATH): return ImageFont.load_default() -def create_label_image(name, event_name, name_font_size=80, event_font_size=40, workshops_font_size=30, qr_text_font_size=20): +def create_label_image(name, event_name, qr_url=None, name_font_size=80, event_font_size=40, workshops_font_size=30, qr_text_font_size=20): """Creates a label image with specified fonts and sizes.""" from jolt import JAMS_URL - qr_code = generate_qr_code(JAMS_URL) + if not qr_url: + qr_url = f'{JAMS_URL}/attendee/login' + qr_code = generate_qr_code(qr_url) # Load fonts name_font = load_font(name_font_size) @@ -51,7 +53,7 @@ def create_label_image(name, event_name, name_font_size=80, event_font_size=40, return img -def print_image_label(name, event_name): +def print_image_label(name, event_name, qr_url): """ Creates and sends a label to the Brother QL-570 printer. @@ -59,7 +61,7 @@ def print_image_label(name, event_name): tuple: (success (bool), error_message (str or None)) """ try: - img = create_label_image(name, event_name) + img = create_label_image(name, event_name, qr_url) img_bytes = BytesIO() img.save(img_bytes, format='PNG') # Save to in-memory file in PNG format img_bytes.seek(0) diff --git a/jolt/print_queue_handler.py b/jolt/print_queue_handler.py index c3f2dc4..68d1e6e 100644 --- a/jolt/print_queue_handler.py +++ b/jolt/print_queue_handler.py @@ -49,10 +49,11 @@ def loop(self): from jolt import event_details, add_event event_id = job.print_data['event_id'] name = job.print_data['name'] + qr_url = job.print_data['qr_url'] if event_id not in event_details: add_event(event_id) sleep(1) - success, error = print_image_label(name, event_details[event_id]) + success, error = print_image_label(name, event_details[event_id], qr_url) response_body = { "ID": str(job.external_id) From 5206d3e196467c76a769aa135429a1bd3a2e3a68 Mon Sep 17 00:00:00 2001 From: James Dougan Date: Sun, 8 Jun 2025 11:41:13 +0100 Subject: [PATCH 3/3] Add None option to function param --- jolt/label.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jolt/label.py b/jolt/label.py index f3decf0..516412e 100644 --- a/jolt/label.py +++ b/jolt/label.py @@ -53,7 +53,7 @@ def create_label_image(name, event_name, qr_url=None, name_font_size=80, event_f return img -def print_image_label(name, event_name, qr_url): +def print_image_label(name, event_name, qr_url=None): """ Creates and sends a label to the Brother QL-570 printer.