File size: 2,500 Bytes
51d39c9
9b35d16
71978cc
 
728ec2a
253a332
b658d64
71978cc
4be2e38
b658d64
 
 
 
c32c1af
4be2e38
b658d64
84a5b18
71978cc
84a5b18
 
 
 
9b35d16
84a5b18
b658d64
84a5b18
 
b658d64
71978cc
 
b658d64
84a5b18
a2f1a4d
4be2e38
 
 
 
a2f1a4d
 
b658d64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a2f1a4d
 
b658d64
51d39c9
b658d64
 
 
 
 
84a5b18
5119cc5
51d39c9
5119cc5
 
51d39c9
a2f1a4d
84a5b18
b658d64
84a5b18
728ec2a
4be2e38
b658d64
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
from flask import Flask, render_template, request, jsonify
from simple_salesforce import Salesforce
from dotenv import load_dotenv
import os
import logging

# Load environment variables from .env file
load_dotenv()

# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

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')
        )
        logger.info("Successfully connected to Salesforce")
        return sf
    except Exception as e:
        logger.error(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('/get_ingredients', methods=['POST'])
def get_ingredients():
    global sf
    if not sf:
        sf = get_salesforce_connection()
        if not sf:
            return jsonify({"error": "Failed to connect to Salesforce"}), 500

    dietary_preference = request.json.get('dietary_preference', '').lower()
    
    # Map dietary preference to SOQL condition
    preference_map = {
        'vegetarian': "Category__c = 'Veg'",
        'non-vegetarian': "Category__c = 'Non-Veg'",
        'both': None  # No condition to fetch all records
    }
    condition = preference_map.get(dietary_preference)

    try:
        # Construct the base query
        soql = "SELECT Name, Image_URL__c FROM Sector_Detail__c"
        if condition:
            soql += f" WHERE {condition}"
        soql += " LIMIT 200"

        logger.info(f"Executing SOQL query: {soql}")
        result = sf.query(soql)
        ingredients = [
            {"name": record['Name'], "image_url": record.get('Image_URL__c', '')}
            for record in result['records'] if 'Name' in record
        ]
        logger.info(f"Fetched {len(ingredients)} ingredients: {ingredients}")
        return jsonify({"ingredients": ingredients})
    except Exception as e:
        logger.error(f"Failed to fetch ingredients: {str(e)}")
        return jsonify({"error": f"Failed to fetch ingredients: {str(e)}"}), 500

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=7860)