lokesh341 commited on
Commit
1e668b9
·
verified ·
1 Parent(s): 90e6c0c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -55
app.py CHANGED
@@ -10,7 +10,7 @@ from datetime import datetime
10
  load_dotenv()
11
 
12
  # Set up logging
13
- logging.basicConfig(level=logging.INFO)
14
  logger = logging.getLogger(__name__)
15
 
16
  app = Flask(__name__, template_folder='templates', static_folder='static')
@@ -35,7 +35,7 @@ sf = get_salesforce_connection()
35
 
36
  @app.route('/')
37
  def index():
38
- return render_template('chef-bot.html')
39
 
40
  @app.route('/static/<path:filename>')
41
  def static_files(filename):
@@ -50,18 +50,19 @@ def get_ingredients():
50
  return jsonify({"error": "Unable to connect to Salesforce"}), 500
51
 
52
  try:
53
- soql = "SELECT Name, Category__c FROM Sector_Detail__c WHERE Category__c = 'Both'"
54
  soql += " LIMIT 200"
55
- logger.info(f"Executing SOQL query for Sector_Detail__c: {soql}")
56
  result = sf.query(soql)
57
  ingredients = [
58
  {
59
  "name": record['Name'],
 
60
  "category": record.get('Category__c', '')
61
  }
62
  for record in result['records'] if 'Name' in record
63
  ]
64
- logger.info(f"Fetched {len(ingredients)} ingredients from Sector_Detail__c")
65
  return jsonify({"ingredients": ingredients})
66
  except Exception as e:
67
  logger.error(f"Failed to fetch ingredients: {str(e)}")
@@ -79,45 +80,37 @@ def get_menu_items():
79
  data = request.json
80
  dietary_preference = data.get('dietary_preference', 'both').lower()
81
  search_term = data.get('search_term', '').strip()
82
- source = data.get('source', 'Menu_Item__c')
83
 
84
  try:
85
- items = []
86
- if source == 'Menu_Item__c':
87
- soql_menu = "SELECT Name, Description__c, Image1__c, Ingredientsinfo__c, NutritionalInfo__c, Price__c, Sector__c, Spice_Levels__c, Veg_NonVeg__c, Category__c, Dynamic_Dish__c FROM Menu_Item__c"
88
- if search_term:
89
- soql_menu += f" WHERE Name LIKE '%{search_term}%'"
90
- elif dietary_preference == 'vegetarian':
91
- soql_menu += " WHERE Veg_NonVeg__c = 'Vegetarian'"
92
- elif dietary_preference == 'non-vegetarian':
93
- soql_menu += " WHERE Veg_NonVeg__c = 'Non-Vegetarian'"
94
- soql_menu += " LIMIT 200"
95
- logger.info(f"Executing SOQL query for Menu_Item__c: {soql_menu}")
96
- result_menu = sf.query(soql_menu)
97
- menu_items = [
98
- {
99
- "name": record['Name'],
100
- "description": record.get('Description__c', 'No description available'),
101
- "image_url": record.get('Image1__c', ''),
102
- "ingredients": record.get('Ingredientsinfo__c', ''),
103
- "nutritional_info": record.get('NutritionalInfo__c', ''),
104
- "price": record.get('Price__c', 0.0),
105
- "sector": record.get('Sector__c', ''),
106
- "spice_levels": record.get('Spice_Levels__c', ''),
107
- "veg_nonveg": record.get('Veg_NonVeg__c', ''),
108
- "category": record.get('Category__c', ''),
109
- "dynamic_dish": record.get('Dynamic_Dish__c', False),
110
- "source": "Menu_Item__c"
111
- }
112
- for record in result_menu['records'] if 'Name' in record
113
- ]
114
- items.extend(menu_items)
115
-
116
- logger.info(f"Fetched {len(items)} items from {source} for {dietary_preference or search_term}")
117
- return jsonify({"menu_items": items})
118
  except Exception as e:
119
- logger.error(f"Failed to fetch items: {str(e)}")
120
- return jsonify({"error": f"Failed to fetch items from Salesforce: {str(e)}"}), 500
121
 
122
  @app.route('/get_related_menu_items', methods=['POST'])
123
  def get_related_menu_items():
@@ -135,32 +128,29 @@ def get_related_menu_items():
135
  return jsonify({"error": "Ingredient name is required"}), 400
136
 
137
  try:
138
- soql = "SELECT Name, Description__c, Image1__c, Ingredientsinfo__c, NutritionalInfo__c, Price__c, Sector__c, Spice_Levels__c, Veg_NonVeg__c, Category__c, Dynamic_Dish__c FROM Menu_Item__c WHERE Ingredientsinfo__c LIKE '%" + ingredient_name + "%'"
139
  if dietary_preference == 'vegetarian':
140
  soql += " AND Veg_NonVeg__c = 'Vegetarian'"
141
  elif dietary_preference == 'non-vegetarian':
142
  soql += " AND Veg_NonVeg__c = 'Non-Vegetarian'"
143
  soql += " LIMIT 200"
144
- logger.info(f"Executing SOQL query for related Menu_Item__c: {soql}")
145
  result = sf.query(soql)
146
  menu_items = [
147
  {
148
  "name": record['Name'],
149
  "description": record.get('Description__c', 'No description available'),
150
- "image_url": record.get('Image1__c', ''),
151
  "ingredients": record.get('Ingredientsinfo__c', ''),
152
- "nutritional_info": record.get('NutritionalInfo__c', ''),
153
  "price": record.get('Price__c', 0.0),
154
- "sector": record.get('Sector__c', ''),
155
- "spice_levels": record.get('Spice_Levels__c', ''),
156
  "veg_nonveg": record.get('Veg_NonVeg__c', ''),
157
- "category": record.get('Category__c', ''),
158
- "dynamic_dish": record.get('Dynamic_Dish__c', False),
159
  "source": "Menu_Item__c"
160
  }
161
  for record in result['records'] if 'Name' in record
162
  ]
163
- logger.info(f"Fetched {len(menu_items)} related menu items for {ingredient_name}")
164
  return jsonify({"menu_items": menu_items})
165
  except Exception as e:
166
  logger.error(f"Failed to fetch related menu items: {str(e)}")
@@ -174,11 +164,13 @@ def submit_ingredients():
174
  if not sf:
175
  return jsonify({"error": "Unable to connect to Salesforce"}), 500
176
 
177
- items = request.json.get('items', [])
178
- custom_order_name = request.json.get('custom_order_name', '')
179
- ingredients_info = request.json.get('ingredients_info', '')
 
 
180
  if not items:
181
- return jsonify({"error": "No items to submit"}), 400
182
 
183
  try:
184
  ingredient_name = custom_order_name or f"Order_{datetime.now().strftime('%Y%m%d')}_{uuid.uuid4().hex[:8]}"
@@ -198,7 +190,7 @@ def submit_ingredients():
198
  'Ingredientsinfo__c': ingredients_info or item.get('ingredientsInfo', '')
199
  })
200
 
201
- logger.info(f"Submitted {len(items)} items under {ingredient_name}")
202
  return jsonify({"success": f"Submitted {len(items)} items under {ingredient_name}", "ingredient_name": ingredient_name})
203
  except Exception as e:
204
  logger.error(f"Failed to submit items: {str(e)}")
 
10
  load_dotenv()
11
 
12
  # Set up logging
13
+ logging.basicConfig(level=logging.DEBUG)
14
  logger = logging.getLogger(__name__)
15
 
16
  app = Flask(__name__, template_folder='templates', static_folder='static')
 
35
 
36
  @app.route('/')
37
  def index():
38
+ return render_template('index.html')
39
 
40
  @app.route('/static/<path:filename>')
41
  def static_files(filename):
 
50
  return jsonify({"error": "Unable to connect to Salesforce"}), 500
51
 
52
  try:
53
+ soql = "SELECT Name, Image_URL__c, Category__c FROM Sector_Detail__c WHERE Category__c = 'Both'"
54
  soql += " LIMIT 200"
55
+ logger.debug(f"Executing SOQL query for Sector_Detail__c: {soql}")
56
  result = sf.query(soql)
57
  ingredients = [
58
  {
59
  "name": record['Name'],
60
+ "image_url": record.get('Image_URL__c', ''),
61
  "category": record.get('Category__c', '')
62
  }
63
  for record in result['records'] if 'Name' in record
64
  ]
65
+ logger.debug(f"Fetched {len(ingredients)} ingredients from Sector_Detail__c")
66
  return jsonify({"ingredients": ingredients})
67
  except Exception as e:
68
  logger.error(f"Failed to fetch ingredients: {str(e)}")
 
80
  data = request.json
81
  dietary_preference = data.get('dietary_preference', 'both').lower()
82
  search_term = data.get('search_term', '').strip()
 
83
 
84
  try:
85
+ soql_menu = "SELECT Name, Description__c, Image1__c, Image2__c, Ingredientsinfo__c, Price__c, Section__c, Veg_NonVeg__c, Total_Ordered__c FROM Menu_Item__c"
86
+ if search_term:
87
+ soql_menu += f" WHERE Name LIKE '%{search_term}%'"
88
+ elif dietary_preference == 'vegetarian':
89
+ soql_menu += " WHERE Veg_NonVeg__c = 'Vegetarian'"
90
+ elif dietary_preference == 'non-vegetarian':
91
+ soql_menu += " WHERE Veg_NonVeg__c = 'Non-Vegetarian'"
92
+ soql_menu += " LIMIT 200"
93
+ logger.debug(f"Executing SOQL query for Menu_Item__c: {soql_menu}")
94
+ result_menu = sf.query(soql_menu)
95
+ menu_items = [
96
+ {
97
+ "name": record['Name'],
98
+ "description": record.get('Description__c', 'No description available'),
99
+ "image_url": record.get('Image1__c', '') or record.get('Image2__c', ''),
100
+ "ingredients": record.get('Ingredientsinfo__c', ''),
101
+ "price": record.get('Price__c', 0.0),
102
+ "section": record.get('Section__c', ''),
103
+ "veg_nonveg": record.get('Veg_NonVeg__c', ''),
104
+ "total_ordered": record.get('Total_Ordered__c', 0),
105
+ "source": "Menu_Item__c"
106
+ }
107
+ for record in result_menu['records'] if 'Name' in record
108
+ ]
109
+ logger.debug(f"Fetched {len(menu_items)} menu items")
110
+ return jsonify({"menu_items": menu_items})
 
 
 
 
 
 
 
111
  except Exception as e:
112
+ logger.error(f"Failed to fetch menu items: {str(e)}")
113
+ return jsonify({"error": f"Failed to fetch menu items from Salesforce: {str(e)}"}), 500
114
 
115
  @app.route('/get_related_menu_items', methods=['POST'])
116
  def get_related_menu_items():
 
128
  return jsonify({"error": "Ingredient name is required"}), 400
129
 
130
  try:
131
+ soql = "SELECT Name, Description__c, Image1__c, Image2__c, Ingredientsinfo__c, Price__c, Section__c, Veg_NonVeg__c, Total_Ordered__c FROM Menu_Item__c WHERE Ingredientsinfo__c LIKE '%" + ingredient_name + "%'"
132
  if dietary_preference == 'vegetarian':
133
  soql += " AND Veg_NonVeg__c = 'Vegetarian'"
134
  elif dietary_preference == 'non-vegetarian':
135
  soql += " AND Veg_NonVeg__c = 'Non-Vegetarian'"
136
  soql += " LIMIT 200"
137
+ logger.debug(f"Executing SOQL query for related Menu_Item__c: {soql}")
138
  result = sf.query(soql)
139
  menu_items = [
140
  {
141
  "name": record['Name'],
142
  "description": record.get('Description__c', 'No description available'),
143
+ "image_url": record.get('Image1__c', '') or record.get('Image2__c', ''),
144
  "ingredients": record.get('Ingredientsinfo__c', ''),
 
145
  "price": record.get('Price__c', 0.0),
146
+ "section": record.get('Section__c', ''),
 
147
  "veg_nonveg": record.get('Veg_NonVeg__c', ''),
148
+ "total_ordered": record.get('Total_Ordered__c', 0),
 
149
  "source": "Menu_Item__c"
150
  }
151
  for record in result['records'] if 'Name' in record
152
  ]
153
+ logger.debug(f"Fetched {len(menu_items)} related menu items for {ingredient_name}")
154
  return jsonify({"menu_items": menu_items})
155
  except Exception as e:
156
  logger.error(f"Failed to fetch related menu items: {str(e)}")
 
164
  if not sf:
165
  return jsonify({"error": "Unable to connect to Salesforce"}), 500
166
 
167
+ data = request.json
168
+ items = data.get('items', [])
169
+ custom_order_name = data.get('custom_order_name', '')
170
+ ingredients_info = data.get('ingredients_info', '')
171
+
172
  if not items:
173
+ return jsonify({'error': 'No items selected'}), 400
174
 
175
  try:
176
  ingredient_name = custom_order_name or f"Order_{datetime.now().strftime('%Y%m%d')}_{uuid.uuid4().hex[:8]}"
 
190
  'Ingredientsinfo__c': ingredients_info or item.get('ingredientsInfo', '')
191
  })
192
 
193
+ logger.debug(f"Submitted {len(items)} items under {ingredient_name}")
194
  return jsonify({"success": f"Submitted {len(items)} items under {ingredient_name}", "ingredient_name": ingredient_name})
195
  except Exception as e:
196
  logger.error(f"Failed to submit items: {str(e)}")