Spaces:
Sleeping
Sleeping
File size: 3,782 Bytes
a2f1a4d 9b35d16 71978cc 728ec2a 253a332 728ec2a 71978cc 4be2e38 c32c1af 4be2e38 84a5b18 71978cc 84a5b18 9b35d16 84a5b18 71978cc 84a5b18 a2f1a4d 4be2e38 c32c1af 4be2e38 a2f1a4d a637599 728ec2a 787225f 4c3ee84 65f8d16 7c91f9b eb54790 7c91f9b a2f1a4d 728ec2a a637599 a2f1a4d 84a5b18 5119cc5 7c91f9b 5119cc5 7c91f9b a2f1a4d 84a5b18 728ec2a 84a5b18 728ec2a d396f8d 728ec2a 4c3ee84 d396f8d 728ec2a 5146dee 728ec2a 5146dee e4381f9 4be2e38 7c91f9b |
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 |
from flask import Flask, render_template, send_from_directory, request, jsonify
from simple_salesforce import Salesforce
from dotenv import load_dotenv
import os
import logging
logging.basicConfig(level=logging.DEBUG)
load_dotenv()
app = Flask(__name__, template_folder='templates', static_folder='static')
def get_salesforce_connection():
try:
sf = Salesforce(
username=os.getenv('SFDC_USERNAME'),
password=os.getenv('SFDC_PASSWORD'),
security_token=os.getenv('SFDC_SECURITY_TOKEN'),
domain=os.getenv('SFDC_DOMAIN', 'login')
)
return sf
except Exception as e:
print(f"Error connecting to Salesforce: {e}")
return None
sf = get_salesforce_connection()
@app.route('/')
def index():
return render_template('index.html')
@app.route('/static/<path:filename>')
def serve_static(filename):
return send_from_directory('static', filename)
@app.route('/get_ingredients', methods=['POST'])
def get_ingredients():
dietary_preference = request.json.get('dietary_preference', '').strip().lower()
logging.debug(f"Received dietary preference: {dietary_preference}")
if dietary_preference == 'vegetable':
logging.debug("Fetching ingredients for Vegetables...")
soql = "SELECT Name, Image_URL__c, Category__c FROM Sector_Detail__c WHERE Category__c = 'Veg' LIMIT 200"
elif dietary_preference == 'non-vegetarian':
logging.debug("Fetching ingredients for Non-Vegetarian...")
soql = "SELECT Name, Image_URL__c, Category__c FROM Sector_Detail__c WHERE Category__c = 'Non-Veg' LIMIT 200"
else:
logging.debug("Invalid dietary preference received.")
return jsonify({"error": "Invalid dietary preference."}), 400
try:
result = sf.query(soql)
ingredients = [
{"name": record['Name'], "image_url": record.get('Image_URL__c', ''), "category": record.get('Category__c', '')}
for record in result['records'] if 'Name' in record
]
logging.debug(f"Fetched ingredients: {[ing['name'] + ' (' + ing['category'] + ')' for ing in ingredients]}")
return jsonify({"ingredients": ingredients})
except Exception as e:
logging.error(f"Error while fetching ingredients: {str(e)}")
return jsonify({"error": f"Failed to fetch ingredients: {str(e)}"}), 500
@app.route('/get_menu_items_by_ingredients', methods=['POST'])
def get_menu_items_by_ingredients():
ingredients = request.json.get('ingredients', '').strip().lower()
logging.debug(f"Received ingredients: {ingredients}")
# Assuming Menu_Items__c object has an Ingredients__c field to match with selected ingredients
soql = f"SELECT Item_Name__c, Image_URL__c FROM Menu_Items__c WHERE Ingredients__c LIKE '%{ingredients}%' LIMIT 200"
try:
result = sf.query(soql)
menu_items = [
{"name": record['Item_Name__c'], "image_url": record.get('Image_URL__c', '')}
for record in result['records'] if 'Item_Name__c' in record
]
logging.debug(f"Fetched {len(menu_items)} menu items.")
return jsonify({"menu_items": menu_items})
except Exception as e:
logging.error(f"Error while fetching menu items: {str(e)}")
return jsonify({"error": f"Failed to fetch menu items: {str(e)}"}), 500
@app.route('/submit_ingredients', methods=['POST'])
def submit_ingredients():
data = request.json
ingredients = data.get('ingredients', [])
if not ingredients:
return jsonify({'error': 'No ingredients selected'}), 400
logging.debug(f"Ingredients submitted: {ingredients}")
return jsonify({'success': True})
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=7860) |