@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user