Spaces:
Runtime error
Runtime error
from flask import Blueprint, render_template, request, session, jsonify | |
from flask import redirect, url_for | |
from salesforce import get_salesforce_connection | |
menu_blueprint = Blueprint('menu', __name__) | |
# Initialize Salesforce connection | |
sf = get_salesforce_connection() | |
def menu(): | |
selected_category = request.args.get("category", "All") | |
user_email = session.get('user_email') | |
if not user_email: | |
user_email = request.args.get("email") | |
user_name = request.args.get("name") | |
if user_email: | |
session['user_email'] = user_email | |
session['user_name'] = user_name # Store name in session | |
else: | |
return redirect(url_for("login")) | |
else: | |
user_name = session.get('user_name') # Get name from session if it's already stored | |
# Get the first letter of the user's name (make it uppercase for consistency) | |
first_letter = user_name[0].upper() if user_name else "A" | |
try: | |
# Fetch user referral and reward points | |
user_query = f"SELECT Referral__c, Reward_Points__c FROM Customer_Login__c WHERE Email__c = '{user_email}'" | |
user_result = sf.query(user_query) | |
if not user_result['records']: | |
return redirect(url_for('login')) | |
referral_code = user_result['records'][0].get('Referral__c', 'N/A') | |
reward_points = user_result['records'][0].get('Reward_Points__c', 0) | |
# Query to fetch Menu_Item__c records including Total_Ordered__c for best sellers | |
menu_query = """ | |
SELECT Name, Price__c, Description__c, Image1__c, Image2__c, Veg_NonVeg__c, Section__c, Total_Ordered__c, Video_URL__c | |
FROM Menu_Item__c | |
""" | |
result = sf.query(menu_query) | |
food_items = result['records'] if 'records' in result else [] | |
# Ensure Total_Ordered__c has a valid value | |
for item in food_items: | |
if 'Total_Ordered__c' not in item or item['Total_Ordered__c'] is None: | |
item['Total_Ordered__c'] = 0 # Default value | |
# Process the food items and include them in the template | |
section_order = ["Best Sellers", "Starters", "Biryanis", "Curries", "Breads", "Customized dish", "Apetizer", "Desserts", "Soft Drinks"] | |
ordered_menu = {section: [] for section in section_order} | |
# Sorting and filtering logic (same as your existing code) | |
# Pass the ordered_menu and other data to the template | |
return render_template( | |
"menu.html", # Template path | |
ordered_menu=ordered_menu, | |
categories=["All", "Veg", "Non veg"], | |
selected_category=selected_category, | |
referral_code=referral_code, | |
reward_points=reward_points, | |
user_name=user_name, | |
first_letter=first_letter | |
) | |
except Exception as e: | |
# Log the error and return the error page with error details | |
print(f"Error fetching menu data: {str(e)}") | |
return render_template("error.html", error=str(e)) # Render error.html with the error message | |