Spaces:
Sleeping
Sleeping
File size: 4,326 Bytes
a2f1a4d 9b35d16 71978cc 253a332 fcac0af 71978cc 4be2e38 c32c1af 4be2e38 84a5b18 71978cc 84a5b18 9b35d16 84a5b18 71978cc 84a5b18 a2f1a4d 4be2e38 c32c1af 4be2e38 a2f1a4d a637599 787225f a2f1a4d 787225f e255a05 787225f a0e74b0 e16436f a2f1a4d 787225f a637599 a2f1a4d 84a5b18 5119cc5 787225f a2f1a4d 84a5b18 787225f 84a5b18 5146dee e4381f9 1810f61 6b1c76e 253a332 6b1c76e 50ffddd 6b1c76e 253a332 6b1c76e ed656ca 6b1c76e e4381f9 50ffddd 253a332 6b1c76e 253a332 e4381f9 253a332 1810f61 50ffddd 5146dee a2f1a4d 4be2e38 fba6dac |
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 |
from flask import Flask, render_template, send_from_directory, request, jsonify
from simple_salesforce import Salesforce
from dotenv import load_dotenv
import os
import openai
openai.api_key = "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"
# Load environment variables from .env file
load_dotenv()
app = Flask(__name__, template_folder='templates', static_folder='static')
# Function to get Salesforce connection
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
# Initialize Salesforce connection
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()
# Debugging: print the received dietary preference
print(f"Received dietary preference: {dietary_preference}")
if dietary_preference == 'veg':
print("Fetching ingredients for Vegetarian...") # Debug when fetching vegetarian ingredients
soql = "SELECT Name, Image_URL__c FROM Sector_Detail__c WHERE Category__c IN ('Veg') LIMIT 200"
elif dietary_preference == 'non-vegetarian':
print("Fetching ingredients for Non-Vegetarian...") # Debug when fetching non-vegetarian ingredients
soql = "SELECT Name, Image_URL__c FROM Sector_Detail__c WHERE Category__c IN ('Non-Veg') LIMIT 200"
else:
print("Invalid dietary preference received.") # Debug for invalid dietary preference
return jsonify({"error": "Invalid dietary preference."}), 400
try:
result = sf.query(soql)
ingredients = [
{"name": record['Name'], "image_url": record.get('Image_URL__c', '')}
for record in result['records'] if 'Name' in record
]
print(f"Fetched {len(ingredients)} ingredients.") # Debug: print how many ingredients were fetched
return jsonify({"ingredients": ingredients})
except Exception as e:
print(f"Error while fetching ingredients: {str(e)}") # Debug error
return jsonify({"error": f"Failed to fetch ingredients: {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
# You can now process the selected ingredients, store them in a database, etc.
print(f"Ingredients submitted: {ingredients}")
return jsonify({'success': True})
import logging
# Add this to the beginning of your Flask app file
logging.basicConfig(level=logging.DEBUG) # Enable debug-level logging
@app.route('/get_dish_suggestions', methods=['POST'])
def get_dish_suggestions():
selected_ingredients = request.json.get('ingredients', [])
if not selected_ingredients:
return jsonify({'error': 'No ingredients selected'}), 400
ingredients_text = ', '.join([ingredient['name'] for ingredient in selected_ingredients])
prompt = f"Suggest a recipe based on the following ingredients: {ingredients_text}"
try:
# Use the correct API structure for openai>=1.0.0
response = openai.Completion.create(
model="gpt-3.5-turbo",
prompt=prompt,
max_tokens=150,
temperature=0.7
)
dish_suggestions = response['choices'][0]['text'].strip()
return jsonify({"suggestions": dish_suggestions})
except Exception as e:
logging.error(f"Error in /get_dish_suggestions: {e}")
return jsonify({"error": f"Unexpected error: {str(e)}"}), 500
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=7860) |