Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -498,17 +498,15 @@ def menu():
|
|
| 498 |
|
| 499 |
if user_email:
|
| 500 |
session['user_email'] = user_email
|
| 501 |
-
session['user_name'] = user_name
|
| 502 |
else:
|
| 503 |
return redirect(url_for("login"))
|
| 504 |
else:
|
| 505 |
-
user_name = session.get('user_name')
|
| 506 |
|
| 507 |
-
# Get the first letter of the user's name (make it uppercase for consistency)
|
| 508 |
first_letter = user_name[0].upper() if user_name else "A"
|
| 509 |
|
| 510 |
try:
|
| 511 |
-
# Fetch user referral and reward points
|
| 512 |
user_query = f"SELECT Referral__c, Reward_Points__c FROM Customer_Login__c WHERE Email__c = '{user_email}'"
|
| 513 |
user_result = sf.query(user_query)
|
| 514 |
|
|
@@ -518,7 +516,6 @@ def menu():
|
|
| 518 |
referral_code = user_result['records'][0].get('Referral__c', 'N/A')
|
| 519 |
reward_points = user_result['records'][0].get('Reward_Points__c', 0)
|
| 520 |
|
| 521 |
-
# Query to fetch Menu_Item__c records including Total_Ordered__c for best sellers
|
| 522 |
menu_query = """
|
| 523 |
SELECT Name, Price__c, Description__c, Image1__c, Image2__c, Veg_NonVeg__c, Section__c, Total_Ordered__c
|
| 524 |
FROM Menu_Item__c
|
|
@@ -526,28 +523,15 @@ def menu():
|
|
| 526 |
result = sf.query(menu_query)
|
| 527 |
food_items = result['records'] if 'records' in result else []
|
| 528 |
|
| 529 |
-
# Ensure Total_Ordered__c has a valid value
|
| 530 |
for item in food_items:
|
| 531 |
if 'Total_Ordered__c' not in item or item['Total_Ordered__c'] is None:
|
| 532 |
-
item['Total_Ordered__c'] = 0
|
| 533 |
|
| 534 |
-
|
| 535 |
-
custom_dish_query = """
|
| 536 |
-
SELECT Name, Price__c, Description__c, Image1__c, Image2__c, Veg_NonVeg__c, Section__c, Total_Ordered__c
|
| 537 |
-
FROM Custom_Dish__c
|
| 538 |
-
WHERE CreatedDate >= LAST_N_DAYS:7
|
| 539 |
-
"""
|
| 540 |
-
custom_dish_result = sf.query(custom_dish_query)
|
| 541 |
-
custom_dishes = custom_dish_result['records'] if 'records' in custom_dish_result else []
|
| 542 |
-
|
| 543 |
-
# Merge both Menu_Item__c and Custom_Dish__c records into the ordered menu
|
| 544 |
-
all_items = food_items + custom_dishes
|
| 545 |
|
| 546 |
-
# Define the order of sections, adding "Best Sellers" at the top
|
| 547 |
section_order = ["Best Sellers", "Starters", "Biryanis", "Curries", "Breads", "Customized dish", "Apetizer", "Desserts", "Soft Drinks"]
|
| 548 |
ordered_menu = {section: [] for section in section_order}
|
| 549 |
|
| 550 |
-
# Sort items by Total_Ordered__c in descending order and pick top 4 as best sellers
|
| 551 |
best_sellers = sorted(all_items, key=lambda x: x.get("Total_Ordered__c", 0), reverse=True)
|
| 552 |
|
| 553 |
if selected_category == "Veg":
|
|
@@ -555,39 +539,30 @@ def menu():
|
|
| 555 |
elif selected_category == "Non veg":
|
| 556 |
best_sellers = [item for item in best_sellers if item.get("Veg_NonVeg__c") in ["Non veg", "both"]]
|
| 557 |
|
| 558 |
-
# Take only the top 4 best sellers after filtering
|
| 559 |
best_sellers = best_sellers[:4]
|
| 560 |
|
| 561 |
-
# Ensure "Best Sellers" is added only if there are items after filtering
|
| 562 |
if best_sellers:
|
| 563 |
ordered_menu["Best Sellers"] = best_sellers
|
| 564 |
|
| 565 |
-
# Create a set to track item names already added to prevent duplicates
|
| 566 |
added_item_names = set()
|
| 567 |
|
| 568 |
-
# Filter and organize menu items based on category and section (to avoid duplicates)
|
| 569 |
for item in all_items:
|
| 570 |
-
section = item.get("Section__c", "Others")
|
| 571 |
if section not in ordered_menu:
|
| 572 |
ordered_menu[section] = []
|
| 573 |
|
| 574 |
-
# Skip item if it's already been added to avoid duplicates
|
| 575 |
if item['Name'] in added_item_names:
|
| 576 |
continue
|
| 577 |
|
| 578 |
-
# Apply category filters
|
| 579 |
if selected_category == "Veg" and item.get("Veg_NonVeg__c") not in ["Veg", "both"]:
|
| 580 |
continue
|
| 581 |
if selected_category == "Non veg" and item.get("Veg_NonVeg__c") not in ["Non veg", "both"]:
|
| 582 |
continue
|
| 583 |
|
| 584 |
ordered_menu[section].append(item)
|
| 585 |
-
added_item_names.add(item['Name'])
|
| 586 |
-
print(f"Added item to {section}: {item['Name']}") # Debugging
|
| 587 |
|
| 588 |
-
# Remove empty sections
|
| 589 |
ordered_menu = {section: items for section, items in ordered_menu.items() if items}
|
| 590 |
-
print(f"Final ordered menu: {ordered_menu.keys()}") # Debugging
|
| 591 |
|
| 592 |
categories = ["All", "Veg", "Non veg"]
|
| 593 |
|
|
@@ -598,7 +573,6 @@ def menu():
|
|
| 598 |
referral_code = 'N/A'
|
| 599 |
reward_points = 0
|
| 600 |
|
| 601 |
-
# Pass the user's first letter (first_letter) to the template
|
| 602 |
return render_template(
|
| 603 |
"menu.html",
|
| 604 |
ordered_menu=ordered_menu,
|
|
@@ -606,8 +580,8 @@ def menu():
|
|
| 606 |
selected_category=selected_category,
|
| 607 |
referral_code=referral_code,
|
| 608 |
reward_points=reward_points,
|
| 609 |
-
user_name=user_name,
|
| 610 |
-
first_letter=first_letter
|
| 611 |
)
|
| 612 |
|
| 613 |
|
|
|
|
| 498 |
|
| 499 |
if user_email:
|
| 500 |
session['user_email'] = user_email
|
| 501 |
+
session['user_name'] = user_name
|
| 502 |
else:
|
| 503 |
return redirect(url_for("login"))
|
| 504 |
else:
|
| 505 |
+
user_name = session.get('user_name')
|
| 506 |
|
|
|
|
| 507 |
first_letter = user_name[0].upper() if user_name else "A"
|
| 508 |
|
| 509 |
try:
|
|
|
|
| 510 |
user_query = f"SELECT Referral__c, Reward_Points__c FROM Customer_Login__c WHERE Email__c = '{user_email}'"
|
| 511 |
user_result = sf.query(user_query)
|
| 512 |
|
|
|
|
| 516 |
referral_code = user_result['records'][0].get('Referral__c', 'N/A')
|
| 517 |
reward_points = user_result['records'][0].get('Reward_Points__c', 0)
|
| 518 |
|
|
|
|
| 519 |
menu_query = """
|
| 520 |
SELECT Name, Price__c, Description__c, Image1__c, Image2__c, Veg_NonVeg__c, Section__c, Total_Ordered__c
|
| 521 |
FROM Menu_Item__c
|
|
|
|
| 523 |
result = sf.query(menu_query)
|
| 524 |
food_items = result['records'] if 'records' in result else []
|
| 525 |
|
|
|
|
| 526 |
for item in food_items:
|
| 527 |
if 'Total_Ordered__c' not in item or item['Total_Ordered__c'] is None:
|
| 528 |
+
item['Total_Ordered__c'] = 0
|
| 529 |
|
| 530 |
+
all_items = food_items
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 531 |
|
|
|
|
| 532 |
section_order = ["Best Sellers", "Starters", "Biryanis", "Curries", "Breads", "Customized dish", "Apetizer", "Desserts", "Soft Drinks"]
|
| 533 |
ordered_menu = {section: [] for section in section_order}
|
| 534 |
|
|
|
|
| 535 |
best_sellers = sorted(all_items, key=lambda x: x.get("Total_Ordered__c", 0), reverse=True)
|
| 536 |
|
| 537 |
if selected_category == "Veg":
|
|
|
|
| 539 |
elif selected_category == "Non veg":
|
| 540 |
best_sellers = [item for item in best_sellers if item.get("Veg_NonVeg__c") in ["Non veg", "both"]]
|
| 541 |
|
|
|
|
| 542 |
best_sellers = best_sellers[:4]
|
| 543 |
|
|
|
|
| 544 |
if best_sellers:
|
| 545 |
ordered_menu["Best Sellers"] = best_sellers
|
| 546 |
|
|
|
|
| 547 |
added_item_names = set()
|
| 548 |
|
|
|
|
| 549 |
for item in all_items:
|
| 550 |
+
section = item.get("Section__c", "Others")
|
| 551 |
if section not in ordered_menu:
|
| 552 |
ordered_menu[section] = []
|
| 553 |
|
|
|
|
| 554 |
if item['Name'] in added_item_names:
|
| 555 |
continue
|
| 556 |
|
|
|
|
| 557 |
if selected_category == "Veg" and item.get("Veg_NonVeg__c") not in ["Veg", "both"]:
|
| 558 |
continue
|
| 559 |
if selected_category == "Non veg" and item.get("Veg_NonVeg__c") not in ["Non veg", "both"]:
|
| 560 |
continue
|
| 561 |
|
| 562 |
ordered_menu[section].append(item)
|
| 563 |
+
added_item_names.add(item['Name'])
|
|
|
|
| 564 |
|
|
|
|
| 565 |
ordered_menu = {section: items for section, items in ordered_menu.items() if items}
|
|
|
|
| 566 |
|
| 567 |
categories = ["All", "Veg", "Non veg"]
|
| 568 |
|
|
|
|
| 573 |
referral_code = 'N/A'
|
| 574 |
reward_points = 0
|
| 575 |
|
|
|
|
| 576 |
return render_template(
|
| 577 |
"menu.html",
|
| 578 |
ordered_menu=ordered_menu,
|
|
|
|
| 580 |
selected_category=selected_category,
|
| 581 |
referral_code=referral_code,
|
| 582 |
reward_points=reward_points,
|
| 583 |
+
user_name=user_name,
|
| 584 |
+
first_letter=first_letter
|
| 585 |
)
|
| 586 |
|
| 587 |
|