Spaces:
Sleeping
Sleeping
File size: 5,669 Bytes
211d39c 3f862cb 4e07a43 ebdfd29 5ed0e4f 4e07a43 5ed0e4f 4e07a43 5ed0e4f 4e07a43 5ed0e4f 621242c ea68aef 5ed0e4f ea68aef 5ed0e4f ea68aef 5ed0e4f ea68aef 5ed0e4f ea68aef 5ed0e4f 7327577 5ed0e4f 7327577 5ed0e4f 7327577 5ed0e4f 0140872 5ed0e4f 7327577 5ed0e4f 7327577 5ed0e4f 7327577 5ed0e4f 7327577 5ed0e4f 7327577 5ed0e4f 7327577 5ed0e4f 7327577 5ed0e4f 7327577 5ed0e4f 51d5c5f 5ed0e4f 7327577 5ed0e4f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
from flask import Blueprint, render_template, request, session, jsonify, redirect, url_for
from salesforce import get_salesforce_connection
sf = get_salesforce_connection()
menu_blueprint = Blueprint('menu', __name__)
@menu_blueprint.route("/menu", methods=["GET"])
def menu():
email = session.get('user_email')
user_name = session.get('user_name')
if not email or not user_name:
return redirect(url_for("login"))
category = request.args.get('category', 'All')
veg_filter = request.args.get('veg', None)
# Build query based on filters
query_conditions = []
if veg_filter:
category = 'Veg'
query_conditions.append("Veg_NonVeg__c = 'Veg'")
elif category == 'All':
query_conditions.append("(Veg_NonVeg__c = 'Veg' OR Veg_NonVeg__c = 'Non veg')")
elif category == 'Customized Dish':
query_conditions.append(f"Section__c = 'Customized Dish' AND Customer_Email__c = '{email}'")
else:
query_conditions.append(f"Veg_NonVeg__c = '{category}'")
query = f"""
SELECT Name, Price__c, Image1__c, Image2__c, Video1__c, Section__c, Description__c, Ingredientsinfo__c, NutritionalInfo__c, Allergens__c, Veg_NonVeg__c
FROM Menu_Item__c
WHERE {' AND '.join(query_conditions)}
"""
try:
result = sf.query(query)
menu_items = result.get("records", [])
# Organize menu items by section
ordered_menu = {}
for item in menu_items:
section = item.get('Section__c', 'Other')
if section not in ordered_menu:
ordered_menu[section] = []
ordered_menu[section].append(item)
# Fetch most common add-ons (simplified for this example)
most_common_addons = ["Medium", "Raita"]
return render_template(
"menu.html",
ordered_menu=ordered_menu,
selected_category=category,
user_name=user_name,
first_letter=user_name[0].upper(),
most_common_addons=most_common_addons
)
except Exception as e:
print(f"Error fetching menu items: {e}")
return render_template(
"menu.html",
ordered_menu={},
selected_category=category,
user_name=user_name,
first_letter=user_name[0].upper(),
most_common_addons=[]
)
@menu_blueprint.route("/menu/save_custom_dish", methods=["POST"])
def save_custom_dish():
try:
email = session.get('user_email')
if not email:
return jsonify({"success": False, "error": "User not logged in."}), 401
data = request.get_json()
menu_item = data.get('menu_item')
ingredients = data.get('ingredients', [])
instructions = data.get('instructions', '')
item_price = float(data.get('itemPrice', 10.00))
item_image = data.get('itemImage', 'https://via.placeholder.com/120')
# Create a new Menu_Item__c record for the custom dish
sf.Menu_Item__c.create({
"Name": menu_item['name'],
"Price__c": item_price,
"Image1__c": item_image,
"Section__c": "Customized Dish",
"Description__c": instructions,
"Ingredientsinfo__c": ", ".join(i['name'] for i in ingredients),
"Customer_Email__c": email,
"Veg_NonVeg__c": "Custom"
})
return jsonify({"success": True, "message": "Custom dish saved successfully"})
except Exception as e:
print(f"Error saving custom dish: {e}")
return jsonify({"success": False, "error": str(e)}), 500
@menu_blueprint.route("/get_ingredients", methods=["POST"])
def get_ingredients():
try:
data = request.get_json()
dietary_preference = data.get('dietary_preference', 'all')
# Simplified ingredient fetching logic
ingredients = [
{"name": "Tomato", "image_url": "https://via.placeholder.com/120", "category": "vegetarian"},
{"name": "Chicken", "image_url": "https://via.placeholder.com/120", "category": "non-vegetarian"},
{"name": "Onion", "image_url": "https://via.placeholder.com/120", "category": "vegetarian"},
{"name": "Beef", "image_url": "https://via.placeholder.com/120", "category": "non-vegetarian"}
]
filtered_ingredients = [
ingredient for ingredient in ingredients
if dietary_preference == 'all' or ingredient['category'] == dietary_preference.lower()
or dietary_preference in ingredient['name'].lower()
]
return jsonify({"success": True, "ingredients": filtered_ingredients})
except Exception as e:
print(f"Error fetching ingredients: {e}")
return jsonify({"success": False, "error": str(e)}), 500
@menu_blueprint.route("/get_menu_items", methods=["POST"])
def get_menu_items():
try:
data = request.get_json()
ingredient_names = data.get('ingredient_names', '')
# Simplified menu item fetching logic
menu_items = [
{"name": "Tomato Curry", "image_url": "https://via.placeholder.com/120"},
{"name": "Chicken Biryani", "image_url": "https://via.placeholder.com/120"}
]
filtered_items = [
item for item in menu_items
if not ingredient_names or any(ing in item['name'].lower() for ing in ingredient_names.split())
]
return jsonify({"success": True, "menu_items": filtered_items})
except Exception as e:
print(f"Error fetching menu items: {e}")
return jsonify({"success": False, "error": str(e)}), 500 |