voicemenuspe / app.py
lokesh341's picture
Update app.py
d1aea20 verified
raw
history blame
4.73 kB
import torch
from flask import Flask, render_template, request, jsonify
import json
import os
from transformers import pipeline
from gtts import gTTS
from pydub import AudioSegment
from pydub.silence import detect_nonsilent
from transformers import AutoConfig
import time
from waitress import serve
from simple_salesforce import Salesforce
import requests
import datetime
app = Flask(__name__, template_folder="templates")
app.secret_key = os.urandom(24)
# βœ… Salesforce Connection Setup
try:
print("Attempting to connect to Salesforce...")
sf = Salesforce(username='diggavalli98@gmail.com', password='Sati@1020', security_token='sSSjyhInIsUohKpG8sHzty2q')
print("βœ… Connected to Salesforce successfully!")
except Exception as e:
print(f"❌ Failed to connect to Salesforce: {str(e)}")
# βœ… HOME ROUTE (Loads `index.html`)
@app.route("/", methods=["GET"])
def index():
return render_template("index.html")
# βœ… DASHBOARD ROUTE
@app.route("/dashboard", methods=["GET"])
def dashboard():
return render_template("dashboard.html")
# βœ… MENU PAGE ROUTE (NEWLY ADDED)
@app.route("/menu_page", methods=["GET"])
def menu_page():
try:
query = "SELECT Name, Price__c, Ingredients__c, Category__c FROM Menu_Item__c"
result = sf.query(query)
menu_items = []
for item in result["records"]:
menu_items.append({
"name": item["Name"],
"price": item["Price__c"],
"ingredients": item["Ingredients__c"],
"category": item["Category__c"]
})
return render_template("menu_page.html", menu=menu_items)
except Exception as e:
return jsonify({"error": f"Failed to fetch menu: {str(e)}"}), 500
# βœ… LOGIN API
@app.route('/login', methods=['POST'])
def login():
data = request.json
name = data.get('name')
email = data.get('email')
phone_number = data.get('phone_number')
if not name or not email or not phone_number:
return jsonify({'error': 'Missing required fields'}), 400
try:
customer_login = sf.Customer_Login__c.create({
'Name': name,
'Email__c': email,
'Phone_Number__c': phone_number
})
return jsonify({'success': True, 'id': customer_login['id']}), 200
except Exception as e:
return jsonify({'error': f'Failed to create record in Salesforce: {str(e)}'}), 500
# βœ… REGISTER API
@app.route("/submit", methods=["POST"])
def submit():
data = request.json
name = data.get('name')
email = data.get('email')
phone = data.get('phone')
if not name or not email or not phone:
return jsonify({'error': 'Missing data'}), 400
try:
customer_login = sf.Customer_Login__c.create({
'Name': name,
'Email__c': email,
'Phone_Number__c': phone
})
return jsonify({'success': True}), 200
except Exception as e:
return jsonify({'error': str(e)}), 500
# βœ… PLACE ORDER API (Sends order data to Salesforce)
@app.route("/place_order", methods=["POST"])
def place_order():
data = request.json
order_items = data.get('order_items') # List of items added to the cart
total_price = data.get('total_price') # Total price of the order
customer_name = data.get('customer_name') # Customer details
customer_email = data.get('customer_email')
if not order_items or not total_price or not customer_name or not customer_email:
return jsonify({'error': 'Missing required fields'}), 400
# Creating order record in Salesforce
try:
# Create Order record
order = sf.Order.create({
'Customer_Name__c': customer_name,
'Customer_Email__c': customer_email,
'Total_Price__c': total_price,
'Order_Date__c': str(datetime.datetime.now()), # Date when the order was placed
'Status__c': 'New'
})
# Create Order Line Items (for each item in the order)
for item in order_items:
sf.Order_Line_Item__c.create({
'Order__c': order['id'], # Linking to the order
'Item_Name__c': item['name'],
'Price__c': item['price'],
'Quantity__c': item['quantity'],
'Total_Price__c': item['price'] * item['quantity']
})
return jsonify({'success': True, 'order_id': order['id']}), 200
except Exception as e:
return jsonify({'error': f'Failed to create order in Salesforce: {str(e)}'}), 500
# βœ… START PRODUCTION SERVER
if __name__ == "__main__":
print("βœ… Starting Flask API Server on port 7860...")
serve(app, host="0.0.0.0", port=7860)