""" Main routes for QR Code Manager """ from flask import Blueprint, render_template, redirect, abort from app.utils.auth import login_required from app.utils.link_manager import LinkPageManager from app.utils.url_shortener import URLShortener bp = Blueprint('main', __name__) # Initialize manager link_manager = LinkPageManager() @bp.route('/') @login_required def index(): """Serve the main page""" return render_template('index.html') @bp.route('/links/') def view_link_page(page_id): """Display the public link page (for QR codes)""" if not link_manager.page_exists(page_id): return "Page not found", 404 link_manager.increment_view_count(page_id) page_data = link_manager.get_page(page_id) return render_template('public_page.html', page=page_data) @bp.route('/stats/') @login_required def view_page_statistics(page_id): """Display the statistics page for admins""" if not link_manager.page_exists(page_id): return "Page not found", 404 page_data = link_manager.get_page(page_id) return render_template('statistics_page.html', page=page_data) @bp.route('/edit/') @login_required def edit_link_page(page_id): """Display the edit interface for the link page""" if not link_manager.page_exists(page_id): return "Page not found", 404 page_data = link_manager.get_page(page_id) return render_template('edit_links.html', page=page_data) @bp.route('/backup') @login_required def backup_management(): """Display the backup management page""" return render_template('backup.html') @bp.route('/health') def health_check(): """Health check endpoint for Docker""" from datetime import datetime from flask import jsonify return jsonify({'status': 'healthy', 'timestamp': datetime.now().isoformat()}) @bp.route('/s/') def redirect_short_url(short_code): """Redirect short URL to original URL""" # Force reload of data to ensure we have the latest short URLs link_manager.url_shortener = URLShortener() original_url = link_manager.resolve_short_url(short_code) if original_url: return redirect(original_url) else: abort(404)