Editor Support

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Jason
2026-05-05 15:42:30 -05:00
parent 9f7c078ccc
commit 29154bd651
32 changed files with 3698 additions and 17 deletions
+37 -3
View File
@@ -1,9 +1,9 @@
"""
"""
Product Finder Blueprint
Handles the product quiz and recommendations
"""
from flask import Blueprint, render_template, send_from_directory
from blueprints.auth import login_required
from flask import Blueprint, render_template, send_from_directory, session, jsonify, redirect, url_for
from blueprints.auth import login_required, get_current_user, can_user
import os
products_bp = Blueprint('products', __name__, url_prefix='/quiz')
@@ -29,6 +29,31 @@ def advanced_search():
"""Serve the advanced search page"""
return render_template('advanced_search.html')
@products_bp.route('/manage')
@login_required
def product_manager():
"""Serve the product management page"""
# Check if user has permission to manage products
if not can_user('manage_products'):
return redirect(url_for('products.product_finder'))
return render_template('product_manager.html')
@products_bp.route('/api/user-session')
@login_required
def get_user_session():
"""Return current user's session data including accessible locations"""
user = get_current_user()
permissions = user.get('permissions', {}) if user else {}
return jsonify({
'username': session.get('username'),
'userId': session.get('user_id'),
'currentLocation': session.get('currentLocation'),
'accessibleLocations': session.get('accessibleLocations', []),
'role': session.get('role', 'user'),
'permissions': permissions
})
@products_bp.route('/css/<path:filename>')
def serve_css(filename):
"""Serve CSS files"""
@@ -48,3 +73,12 @@ def serve_images(filename):
def serve_data(filename):
"""Serve data files (JSON)"""
return send_from_directory(os.path.join(basedir, 'data'), filename)
@products_bp.route('/product/<product_code>')
@login_required
def product_detail(product_code):
"""
Serve product detail page with URL-based navigation
This allows direct linking to products via /quiz/product/404
"""
return render_template('product_finder.html', initial_product=product_code)