From 57db63074b1a360ba65ecb0c7ee8e94c7fbc0358 Mon Sep 17 00:00:00 2001 From: Matt Hills Date: Mon, 20 Oct 2025 17:56:52 -0400 Subject: [PATCH] Add view all barcodes feature with print functionality Added a new feature that allows viewing all product barcodes for a tenant in a grid layout with print-optimized styling. This makes it easy to print barcode sheets for all products at once. Changes: - Add new route //barcodes for viewing all barcodes - Create view_all_barcodes() function in routes/admin.py - Add all_barcodes.html template with responsive grid and print CSS - Add "View All Barcodes" button to tenant index page - Print layout optimized for 3-column barcode sheets --- src/app.py | 3 +- src/routes/admin.py | 19 +++- src/templates/admin/all_barcodes.html | 149 ++++++++++++++++++++++++++ src/templates/admin/index.html | 3 + src/templates/index.html | 11 +- 5 files changed, 178 insertions(+), 7 deletions(-) create mode 100644 src/templates/admin/all_barcodes.html diff --git a/src/app.py b/src/app.py index 8cc4e4f..47b2446 100644 --- a/src/app.py +++ b/src/app.py @@ -400,7 +400,7 @@ def serve_barcode(tenant_id, filename): # Import product management routes from routes.admin import (add_product, edit_product, delete_product, - generate_barcode, manage_ar_fields) + generate_barcode, manage_ar_fields, view_all_barcodes) # Register product management routes (remove /admin/ from paths) app.add_url_rule('//add', 'admin.add_product', add_product, methods=['GET', 'POST']) @@ -408,6 +408,7 @@ app.add_url_rule('//edit/', 'admin.edit_product', app.add_url_rule('//delete/', 'admin.delete_product', delete_product, methods=['POST']) app.add_url_rule('//generate_barcode//', 'admin.generate_barcode', generate_barcode) app.add_url_rule('//ar_fields', 'admin.manage_ar_fields', manage_ar_fields, methods=['GET', 'POST']) +app.add_url_rule('//barcodes', 'admin.view_all_barcodes', view_all_barcodes, methods=['GET']) # Register API routes with tenant prefix from routes.api import api_index diff --git a/src/routes/admin.py b/src/routes/admin.py index 6bea8d4..f8a5d47 100644 --- a/src/routes/admin.py +++ b/src/routes/admin.py @@ -316,19 +316,32 @@ def generate_barcode(tenant_id, product_id, code_type): products = load_products(tenant_id) if product_id not in products: return jsonify({"error": "Product not found"}), 404 - + # Map code_type to the expected format for the main endpoint type_mapping = { 'qrcode': 'qr', 'ean13': 'ean13', 'code128': 'code128' } - + barcode_type = type_mapping.get(code_type, code_type) - + # Redirect to the main barcode endpoint which generates dynamically return redirect(f'/{tenant_id}/barcodes/{product_id}_{barcode_type}.png') +def view_all_barcodes(tenant_id): + """Display all product barcodes for printing""" + products = load_products(tenant_id) + tenant = database.get_or_create_tenant(tenant_id) + + # Get barcode type setting for this tenant + barcode_type = tenant.get('barcode_type', 'qr') + + return render_template('admin/all_barcodes.html', + products=products, + tenant=tenant, + barcode_type=barcode_type) + def manage_credentials(tenant_id): """Manage tenant login credentials""" tenant = database.get_or_create_tenant(tenant_id) diff --git a/src/templates/admin/all_barcodes.html b/src/templates/admin/all_barcodes.html new file mode 100644 index 0000000..87476f0 --- /dev/null +++ b/src/templates/admin/all_barcodes.html @@ -0,0 +1,149 @@ +{% extends "layout.html" %} + +{% block title %}All Barcodes - {{ tenant.name }} - KCAP Demo Server{% endblock %} + +{% block extra_css %} + +{% endblock %} + +{% block content %} +
+
+
+ Current Tenant: {{ tenant.name }} (ID: {{ tenant.id }}) + +
+ + + + {% if products %} +
+ {% for product_id, product_data in products.items() %} +
+
{{ product_id }}
+ Barcode for {{ product_id }} +
+ {% endfor %} +
+ {% else %} +
+ No products available to generate barcodes. +
+ {% endif %} +
+
+{% endblock %} + +{% block extra_js %} + +{% endblock %} diff --git a/src/templates/admin/index.html b/src/templates/admin/index.html index fb3fc22..bfac565 100644 --- a/src/templates/admin/index.html +++ b/src/templates/admin/index.html @@ -10,6 +10,9 @@ diff --git a/src/templates/index.html b/src/templates/index.html index 65e1a0f..714a997 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -18,9 +18,14 @@