Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions jolt/label.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -51,15 +53,15 @@ 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=None):
"""
Creates and sends a label to the Brother QL-570 printer.

Returns:
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)
Expand Down
3 changes: 2 additions & 1 deletion jolt/print_queue_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
36 changes: 25 additions & 11 deletions jolt/websocket_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Loading