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)