Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -28,7 +28,7 @@ def get_salesforce_connection():
|
|
| 28 |
logger.error(f"Error connecting to Salesforce: {e}")
|
| 29 |
return None
|
| 30 |
|
| 31 |
-
# Initialize Salesforce connection
|
| 32 |
sf = get_salesforce_connection()
|
| 33 |
|
| 34 |
@app.route('/')
|
|
@@ -42,7 +42,7 @@ def get_menu_items():
|
|
| 42 |
if not sf:
|
| 43 |
sf = get_salesforce_connection()
|
| 44 |
if not sf:
|
| 45 |
-
return jsonify({"error": "
|
| 46 |
|
| 47 |
try:
|
| 48 |
soql = "SELECT Name, Image_URL__c FROM Sector_Detail__c LIMIT 200"
|
|
@@ -52,11 +52,11 @@ def get_menu_items():
|
|
| 52 |
{"name": record['Name'], "image_url": record.get('Image_URL__c', '')}
|
| 53 |
for record in result['records'] if 'Name' in record
|
| 54 |
]
|
| 55 |
-
logger.info(f"Fetched {len(menu_items)} menu items
|
| 56 |
return jsonify({"menu_items": menu_items})
|
| 57 |
except Exception as e:
|
| 58 |
logger.error(f"Failed to fetch menu items: {str(e)}")
|
| 59 |
-
return jsonify({"error":
|
| 60 |
|
| 61 |
# Fetch details (description and ingredients) for a specific menu item
|
| 62 |
@app.route('/get_item_details', methods=['POST'])
|
|
@@ -65,14 +65,13 @@ def get_item_details():
|
|
| 65 |
if not sf:
|
| 66 |
sf = get_salesforce_connection()
|
| 67 |
if not sf:
|
| 68 |
-
return jsonify({"error": "
|
| 69 |
|
| 70 |
item_name = request.json.get('item_name', '').strip()
|
| 71 |
if not item_name:
|
| 72 |
return jsonify({"error": "Item name is required"}), 400
|
| 73 |
|
| 74 |
try:
|
| 75 |
-
# Query Salesforce for the specific item
|
| 76 |
soql = f"SELECT Name, Description__c, Ingredients__c, Image_URL__c FROM Sector_Detail__c WHERE Name = '{item_name}' LIMIT 1"
|
| 77 |
logger.info(f"Executing SOQL query: {soql}")
|
| 78 |
result = sf.query(soql)
|
|
@@ -87,27 +86,26 @@ def get_item_details():
|
|
| 87 |
"ingredients": record.get('Ingredients__c', 'No ingredients listed'),
|
| 88 |
"image_url": record.get('Image_URL__c', '')
|
| 89 |
}
|
| 90 |
-
logger.info(f"Fetched details for {item_name}
|
| 91 |
return jsonify({"item_details": item_details})
|
| 92 |
except Exception as e:
|
| 93 |
logger.error(f"Failed to fetch item details: {str(e)}")
|
| 94 |
-
return jsonify({"error":
|
| 95 |
|
| 96 |
-
# Suggest suitable items based on user input
|
| 97 |
@app.route('/suggest_items', methods=['POST'])
|
| 98 |
def suggest_items():
|
| 99 |
global sf
|
| 100 |
if not sf:
|
| 101 |
sf = get_salesforce_connection()
|
| 102 |
if not sf:
|
| 103 |
-
return jsonify({"error": "
|
| 104 |
|
| 105 |
search_term = request.json.get('search_term', '').strip().lower()
|
| 106 |
if not search_term:
|
| 107 |
return jsonify({"error": "Search term is required"}), 400
|
| 108 |
|
| 109 |
try:
|
| 110 |
-
# Search for items where Name or Ingredients__c contains the search term
|
| 111 |
soql = f"SELECT Name, Image_URL__c FROM Sector_Detail__c WHERE Name LIKE '%{search_term}%' OR Ingredients__c LIKE '%{search_term}%' LIMIT 10"
|
| 112 |
logger.info(f"Executing SOQL query: {soql}")
|
| 113 |
result = sf.query(soql)
|
|
@@ -115,11 +113,11 @@ def suggest_items():
|
|
| 115 |
{"name": record['Name'], "image_url": record.get('Image_URL__c', '')}
|
| 116 |
for record in result['records'] if 'Name' in record
|
| 117 |
]
|
| 118 |
-
logger.info(f"Fetched {len(suggestions)} suggestions for '{search_term}'
|
| 119 |
return jsonify({"suggestions": suggestions})
|
| 120 |
except Exception as e:
|
| 121 |
logger.error(f"Failed to fetch suggestions: {str(e)}")
|
| 122 |
-
return jsonify({"error":
|
| 123 |
|
| 124 |
if __name__ == '__main__':
|
| 125 |
app.run(debug=True, host='0.0.0.0', port=7860)
|
|
|
|
| 28 |
logger.error(f"Error connecting to Salesforce: {e}")
|
| 29 |
return None
|
| 30 |
|
| 31 |
+
# Initialize Salesforce connection globally
|
| 32 |
sf = get_salesforce_connection()
|
| 33 |
|
| 34 |
@app.route('/')
|
|
|
|
| 42 |
if not sf:
|
| 43 |
sf = get_salesforce_connection()
|
| 44 |
if not sf:
|
| 45 |
+
return jsonify({"error": "Unable to connect to Salesforce"}), 500
|
| 46 |
|
| 47 |
try:
|
| 48 |
soql = "SELECT Name, Image_URL__c FROM Sector_Detail__c LIMIT 200"
|
|
|
|
| 52 |
{"name": record['Name'], "image_url": record.get('Image_URL__c', '')}
|
| 53 |
for record in result['records'] if 'Name' in record
|
| 54 |
]
|
| 55 |
+
logger.info(f"Fetched {len(menu_items)} menu items")
|
| 56 |
return jsonify({"menu_items": menu_items})
|
| 57 |
except Exception as e:
|
| 58 |
logger.error(f"Failed to fetch menu items: {str(e)}")
|
| 59 |
+
return jsonify({"error": "Failed to fetch menu items from Salesforce"}), 500
|
| 60 |
|
| 61 |
# Fetch details (description and ingredients) for a specific menu item
|
| 62 |
@app.route('/get_item_details', methods=['POST'])
|
|
|
|
| 65 |
if not sf:
|
| 66 |
sf = get_salesforce_connection()
|
| 67 |
if not sf:
|
| 68 |
+
return jsonify({"error": "Unable to connect to Salesforce"}), 500
|
| 69 |
|
| 70 |
item_name = request.json.get('item_name', '').strip()
|
| 71 |
if not item_name:
|
| 72 |
return jsonify({"error": "Item name is required"}), 400
|
| 73 |
|
| 74 |
try:
|
|
|
|
| 75 |
soql = f"SELECT Name, Description__c, Ingredients__c, Image_URL__c FROM Sector_Detail__c WHERE Name = '{item_name}' LIMIT 1"
|
| 76 |
logger.info(f"Executing SOQL query: {soql}")
|
| 77 |
result = sf.query(soql)
|
|
|
|
| 86 |
"ingredients": record.get('Ingredients__c', 'No ingredients listed'),
|
| 87 |
"image_url": record.get('Image_URL__c', '')
|
| 88 |
}
|
| 89 |
+
logger.info(f"Fetched details for {item_name}")
|
| 90 |
return jsonify({"item_details": item_details})
|
| 91 |
except Exception as e:
|
| 92 |
logger.error(f"Failed to fetch item details: {str(e)}")
|
| 93 |
+
return jsonify({"error": "Failed to fetch item details from Salesforce"}), 500
|
| 94 |
|
| 95 |
+
# Suggest suitable items based on user input
|
| 96 |
@app.route('/suggest_items', methods=['POST'])
|
| 97 |
def suggest_items():
|
| 98 |
global sf
|
| 99 |
if not sf:
|
| 100 |
sf = get_salesforce_connection()
|
| 101 |
if not sf:
|
| 102 |
+
return jsonify({"error": "Unable to connect to Salesforce"}), 500
|
| 103 |
|
| 104 |
search_term = request.json.get('search_term', '').strip().lower()
|
| 105 |
if not search_term:
|
| 106 |
return jsonify({"error": "Search term is required"}), 400
|
| 107 |
|
| 108 |
try:
|
|
|
|
| 109 |
soql = f"SELECT Name, Image_URL__c FROM Sector_Detail__c WHERE Name LIKE '%{search_term}%' OR Ingredients__c LIKE '%{search_term}%' LIMIT 10"
|
| 110 |
logger.info(f"Executing SOQL query: {soql}")
|
| 111 |
result = sf.query(soql)
|
|
|
|
| 113 |
{"name": record['Name'], "image_url": record.get('Image_URL__c', '')}
|
| 114 |
for record in result['records'] if 'Name' in record
|
| 115 |
]
|
| 116 |
+
logger.info(f"Fetched {len(suggestions)} suggestions for '{search_term}'")
|
| 117 |
return jsonify({"suggestions": suggestions})
|
| 118 |
except Exception as e:
|
| 119 |
logger.error(f"Failed to fetch suggestions: {str(e)}")
|
| 120 |
+
return jsonify({"error": "Failed to fetch suggestions from Salesforce"}), 500
|
| 121 |
|
| 122 |
if __name__ == '__main__':
|
| 123 |
app.run(debug=True, host='0.0.0.0', port=7860)
|