project2 / app.py
nagasurendra's picture
Create app.py
b3b9008 verified
import gradio as gr
import json
# Global Cart State to Save Selected Items
cart = {"selected_items": [], "customizations": []}
# Menu Items
menu = {
"Breads": ["Roti", "Butter Naan", "Plain Naan", "Garlic Naan", "Chilly Naan"],
"Veg Curries": ["Paneer Butter Masala", "Kadai Paneer", "Dum Ka Paneer", "Mixed Veg Curry", "Dal Makhani"],
"Non-Veg Curries": ["Chicken Curry", "Mutton Curry", "Fish Curry", "Prawns Curry"],
"Biryanis": ["Veg Biryani", "Paneer Biryani", "Chicken Biryani", "Mutton Biryani", "Fish Biryani", "Prawns Biryani"]
}
# Dynamic Suggestions Based on Selection
def get_suggestions(selected_items):
suggestions = set()
for item in selected_items:
if item in menu["Breads"]:
suggestions.update(menu["Veg Curries"] + menu["Non-Veg Curries"] + menu["Biryanis"])
elif item in menu["Veg Curries"] or item in menu["Non-Veg Curries"]:
suggestions.update(menu["Breads"] + menu["Biryanis"])
elif item in menu["Biryanis"]:
suggestions.update(menu["Breads"] + menu["Veg Curries"] + menu["Non-Veg Curries"])
# Exclude already selected items
return list(suggestions - set(selected_items))
# Add Items to Cart
def add_to_cart(selected_items, suggestions_selected, customizations, custom_text):
cart["selected_items"].extend(selected_items + suggestions_selected)
cart["customizations"].append({
"ingredients": customizations,
"custom_text": custom_text
})
return f"Items added to cart: {', '.join(cart['selected_items'])}", gr.update(visible=True)
# Show Cart Summary
def show_cart():
summary = "**Your Order Summary:**\n"
summary += f"**Selected Items:** {', '.join(cart['selected_items'])}\n"
for idx, customization in enumerate(cart["customizations"]):
summary += f"\n**Customization {idx+1}:**\n"
summary += f"Ingredients: {', '.join(customization['ingredients'])}\n"
summary += f"Custom Dish Preference: {customization['custom_text']}\n"
return summary
# Gradio App
with gr.Blocks() as app:
gr.Markdown("# Restaurant Ordering System")
# Section for Dropdown Menus
with gr.Row():
breads = gr.CheckboxGroup(menu["Breads"], label="Select Breads")
curries = gr.CheckboxGroup(menu["Veg Curries"] + menu["Non-Veg Curries"], label="Select Curries")
biryanis = gr.CheckboxGroup(menu["Biryanis"], label="Select Biryanis")
# Submit Button for Items
submit_btn = gr.Button("Proceed with Selection")
suggestion_box = gr.CheckboxGroup([], label="Suggestions", interactive=True)
custom_ingredients = gr.CheckboxGroup(["Extra Cheese", "Extra Spicy", "Less Oil", "No Onions", "No Garlic"],
label="Customize Your Dish")
custom_text = gr.Textbox(label="Write Your Custom Dish Preference")
# Cart and Final Order Section
cart_output = gr.Textbox(label="Cart Status", interactive=False)
final_order_btn = gr.Button("Show Final Order")
order_summary = gr.Markdown()
# Actions
submit_btn.click(
get_suggestions, inputs=[breads, curries, biryanis], outputs=[suggestion_box]
)
suggestion_box.change(
add_to_cart, inputs=[breads, suggestion_box, custom_ingredients, custom_text], outputs=[cart_output]
)
final_order_btn.click(
show_cart, inputs=[], outputs=[order_summary]
)
app.launch()