voicemenu143 / app.py
lokesh341's picture
Update app.py
ca0b532 verified
raw
history blame
2.76 kB
import torch
from flask import Flask, render_template, request, jsonify, redirect
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 AutoConfig for the config object
import time
from waitress import serve
from simple_salesforce import Salesforce
import requests # Import requests for exception handling
app = Flask(__name__)
device = "cuda" if torch.cuda.is_available() else "cpu"
config = AutoConfig.from_pretrained("openai/whisper-small")
config.update({"timeout": 60})
try:
sf = Salesforce(username='[email protected]', password='Sati@1020', security_token='sSSjyhInIsUohKpG8sHzty2q')
except Exception as e:
print(f"Failed to connect to Salesforce: {str(e)}")
def create_salesforce_record(sf, name, email, phone_number):
try:
customer_login = sf.Customer_Login__c.create({
'Name': name,
'Email__c': email,
'Phone_Number__c': phone_number
})
return customer_login
except Exception as e:
raise Exception(f"Failed to create record: {str(e)}")
def get_menu_items(sf):
query = "SELECT Name, Price__c, Ingredients__c, Category__c FROM Menu_Item__c"
result = sf.query(query)
return result['records']
@app.route("/")
def index():
return render_template("index.html")
@app.route("/dashboard", methods=["GET"])
def dashboard():
return render_template("dashboard.html")
@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:
create_salesforce_record(sf, name, email, phone_number)
return redirect("/menu")
except Exception as e:
return jsonify({'error': f'Failed to create record in Salesforce: {str(e)}'}), 500
@app.route("/menu", methods=["GET"])
def menu_page():
menu_items = get_menu_items(sf)
menu_data = [{"name": item['Name'], "price": item['Price__c'], "ingredients": item['Ingredients__c'], "category": item['Category__c']} for item in menu_items]
return render_template("menu_page.html", menu_items=menu_data)
@app.route("/cart", methods=["GET"])
def cart():
return render_template("cart_page.html")
@app.route("/order-summary", methods=["GET"])
def order_summary():
return render_template("order_summary.html")
@app.route("/final_order", methods=["GET"])
def final_order():
return render_template("final_order.html")
if __name__ == "__main__":
serve(app, host="0.0.0.0", port=7860)