smilecheck / app.py
abhicodes's picture
Update app.py
fcdd696
raw
history blame
31.7 kB
from flask import Flask, render_template, request, redirect, url_for, session
from nltk.sentiment.vader import SentimentIntensityAnalyzer
import mysql.connector
import bcrypt
import datetime
import json
import smtplib
from email.message import EmailMessage
import secrets
import string
mysql = mysql.connector.connect(
host='sql12.freemysqlhosting.net',
user='sql12660485',
password='UxU15DlGpj',
database='sql12660485',
port=3306,
)
app = Flask(__name__)
app.static_folder = 'static'
app.static_url_path = '/static'
app.secret_key = "smilecheck-abhi-2023"
@app.route('/')
def index():
return render_template("index.html")
@app.route('/home', methods=["GET", "POST"])
def home():
if request.method == 'GET':
if 'email' in session:
app.config['MYSQL_DB'] = 'sql12660485'
curh = mysql.cursor()
if session['usertype'] == 0:
curh.execute("SELECT `assessid`, `name` FROM assessments")
typedata = curh.fetchall()
converted_tuple = tuple({'assessid': item[0], 'name': item[1]} for item in typedata)
curh.execute("SELECT `id`, `type` FROM custom WHERE id=%s", (session['id'],))
given = curh.fetchall()
isdone = []
for give in given:
isdone.append(give[1])
curh.execute("SELECT `name`, `happy`, `datetime` FROM `custom`, `assessments` WHERE custom.type = assessments.assessId AND id=%s", (session['id'],))
previous = curh.fetchall()
preprocessed_data = []
for index, row in enumerate(previous):
preprocessed_data.append({
'index': index + 1,
'name': row[0],
'happy': row[1],
'datetime': row[2]
})
return render_template("home.html", typedata=converted_tuple, given=isdone, previous=preprocessed_data )
elif session['usertype'] == 1:
return redirect(url_for('admin'))
mysql.commit()
curh.close()
else:
return redirect(url_for('login'))
if request.method == 'POST':
if 'email' in session:
app.config['MYSQL_DB'] = 'sql12660485'
curh = mysql.cursor()
if 'fname' in request.form:
fname = request.form['fname']
femail = request.form['femail']
feedback = request.form['feedback']
curh.execute("INSERT INTO `feedbacks`(`name`, `email`, `feedback`) VALUES (%s, %s, %s)", (fname, femail, feedback,))
mysql.commit()
curh.close()
session['feed'] = 1
return redirect(url_for('home'))
session['type'] = request.form['type']
curh.execute("SELECT `id`, `type` FROM custom WHERE id=%s AND type=%s", (session['id'], session['type'],))
given = curh.fetchone()
mysql.commit()
curh.close()
if given == None:
return redirect(url_for('form'))
else:
return redirect(url_for('result'))
else:
return redirect(url_for('login'))
return render_template("home.html")
@app.route('/register', methods=["GET", "POST"])
def register():
if request.method == 'GET':
return render_template("register.html", error_code=999, message_code=999)
if request.method == 'POST':
database = request.form['database']
if database == 'database1':
app.config['MYSQL_DB'] = 'sql12660485'
session['database'] = app.config['MYSQL_DB']
elif database == 'database2':
app.config['MYSQL_DB'] = 'sql12660485'
session['database'] = app.config['MYSQL_DB']
name = request.form['name']
email = request.form['email']
cur = mysql.cursor()
cur.execute("SELECT * FROM users WHERE email = %s", (email,))
user = cur.fetchone()
mysql.commit()
cur.close()
if user:
error = 'Email address already in use. Please use a different email address.'
return render_template('register.html', error=error, error_code=550, message_code=569)
else:
session['name'] = name
session['email'] = email
usertype = 'student'
session['pretype'] = usertype
password = request.form['password'].encode('utf-8')
hash_password = bcrypt.hashpw(password, bcrypt.gensalt())
session['hash'] = hash_password
msg = EmailMessage()
alphabet = string.ascii_letters + string.digits
otp = 'smilecheck-user-'+''.join(secrets.choice(alphabet) for i in range(30))
session['otp'] = otp
msg["Subject"] = "SmileCheck Verification"
msg["From"] = "smilecheck100@gmail.com"
msg["To"] = email
link = f"https://abhicodes-smilecheck.hf.space/verify/{otp}"
html_content = render_template('email.html', name=name, link=link)
msg.set_content(html_content, subtype='html')
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login('smilecheck23@gmail.com', 'dczcfrdkthwcfoqu')
smtp.send_message(msg)
return render_template('register.html', message='An Verification Email has been sent to your email address.', message_code=560, error_code=568)
@app.route('/verify/<otp>')
def verify(otp):
if str(session['otp']) == otp:
app.config['MYSQL_DB'] = 'sql12660485'
cur = mysql.cursor()
cur.execute("INSERT INTO users (name, email, password) VALUES (%s,%s,%s)", (session['name'], session['email'], session['hash'],))
if session['pretype'] == 'student':
cur.execute("UPDATE `users` SET `usertype` = %s WHERE `email`=%s", (0, session['email'],))
session['usertype'] = 0
elif session['pretype'] == 'admin':
cur.execute("UPDATE `users` SET `usertype` = %s WHERE `email`=%s", (1, session['email'],))
session['usertype'] = 1
mysql.commit()
cur.close()
session.clear()
redi = 'login'
return render_template('verify.html', message=111, redirect_url=redi)
else:
redi = 'register'
return render_template('verify.html', message=999, redirect_url=redi)
@app.route('/login', methods=["GET", "POST"])
def login():
if request.method == 'GET':
return render_template("login.html", error_code=999)
if request.method == 'POST':
now = datetime.datetime.now()
database = request.form['database']
if database == 'database1':
app.config['MYSQL_DB'] = 'sql12660485'
elif database == 'database2':
app.config['MYSQL_DB'] = 'sql12660485'
email = request.form['email']
password = request.form['password'].encode('utf-8')
curl = mysql.cursor()
curl.execute("SELECT * FROM users WHERE email=%s", (email,))
user = curl.fetchone()
if user != None:
if bcrypt.hashpw(password, user[4].encode('utf-8')) == user[4].encode('utf-8'):
session['id'] = user[0]
session['name'] = user[2]
session['email'] = user[3]
session['database'] = 'test'
print(session)
curl.execute("INSERT INTO session (id, email, action, actionC, datetime) VALUES (%s, %s, %s, %s, %s)", (session['id'], session['email'], 'Logged In - Session Started', 1, now,))
mysql.commit()
curl.close()
if user[1] == 0:
session['usertype'] = 0
return redirect(url_for('home'))
elif user[1] == 1:
session['usertype'] = 1
return redirect(url_for('admin'))
else:
return render_template("login.html", error="Error: Password or Email are incorrect.", error_code=451)
else:
return render_template("login.html", error="Error: User not found. Please register.", error_code=452)
mysql.commit()
curl.close()
else:
return render_template("login.html")
@app.route('/forgot', methods=["GET", "POST"])
def forgot():
if request.method == 'GET':
return render_template("forgot.html")
if request.method == 'POST':
app.config['MYSQL_DB'] = 'sql12660485'
email = request.form['email']
session['email'] = email
curl = mysql.cursor()
curl.execute("SELECT * FROM users WHERE email=%s", (email,))
user = curl.fetchone()
mysql.commit()
curl.close()
if user != None:
msg = EmailMessage()
name= user[2]
alphabet = string.ascii_letters + string.digits
otp = 'smilecheck-pass-' + ''.join(secrets.choice(alphabet) for i in range(30))
session['otp'] = otp
msg["Subject"] = "SmileCheck Verification"
msg["From"] = "smilecheck100@gmail.com"
msg["To"] = email
link = f"https://abhicodes-smilecheck.hf.space/password/{otp}"
html_content = render_template('pass.html', name=name, link=link)
msg.set_content(html_content, subtype='html')
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
smtp.login('smilecheck23@gmail.com', 'dczcfrdkthwcfoqu')
smtp.send_message(msg)
return render_template('register.html', message='An Verification Email has been sent to your email address.', message_code=560, error_code=568)
else:
return render_template("forgot.html", mess="No such User Found.")
@app.route('/password/<otp>', methods=["GET", "POST"])
def password(otp):
if str(session['otp']) == otp:
redi = 'change'
return render_template('password.html', message=111, redirect_url=redi)
else:
redi = 'login'
return render_template('password.html', message=999, redirect_url=redi)
@app.route('/change', methods=["GET", "POST"])
def change():
if request.method == 'GET':
return render_template("change.html")
if request.method == 'POST':
app.config['MYSQL_DB'] = 'sql12660485'
password = request.form['password'].encode('utf-8')
hash_password = bcrypt.hashpw(password, bcrypt.gensalt())
curl = mysql.cursor()
curl.execute("UPDATE `users` SET `password`=%s WHERE email=%s", (hash_password, session['email'],))
mysql.commit()
curl.close()
session.clear()
return redirect(url_for('login'))
@app.route('/admin', methods=["GET", "POST"])
def admin():
if 'email' in session:
if session['usertype'] == 0:
return redirect(url_for('home'))
else:
return redirect(url_for('login'))
if request.method == 'GET':
if 'email' in session:
app.config['MYSQL_DB'] = 'sql12660485'
cura = mysql.cursor()
cura.execute("SELECT `assessid`, `name` FROM assessments")
typedata = cura.fetchall()
typedata_tuple = tuple({'assessid': item[0], 'name': item[1]} for item in typedata)
cura.execute("SELECT `id`, `type` FROM custom")
given = cura.fetchall()
given_tuple = tuple({'id': item[0], 'type': item[1]} for item in given)
isdone = []
for give in given:
isdone.append(give[1])
cura.execute("SELECT `id`, `name`, `email`, `isdone` FROM `users` WHERE `usertype` = 0")
res = cura.fetchall()
res_tuple = tuple({'id': item[0], 'name': item[1], 'email': item[2], 'isdone': item[3]} for item in res)
cura.execute("SELECT `assessId`, `name`, `description`, `Questions`, `average` FROM `assessments`")
que = cura.fetchall()
que_tuple = tuple({'assessId': item[0], 'name': item[1], 'description': item[2], 'Questions': item[3], 'average': item[4]} for item in que)
cura.execute("SELECT `id`, `type`, `name` FROM `custom`, `assessments` WHERE custom.type = assessments.assessId")
abc = cura.fetchall()
abc_tuple = tuple({'id': item[0], 'type': item[1], 'name': item[2]} for item in abc)
ahi = 0.0
for assess in que:
if assess[0] == 101:
ahi = assess[4]
ts = len(res)
tas = len(isdone)
cura.execute("SELECT `name`, `email`, `feedback` FROM `feedbacks`")
feeds = cura.fetchall()
feeds_tuple = tuple({'name': item[0], 'email': item[1], 'feedback': item[2]} for item in feeds)
mysql.commit()
cura.close()
return render_template("admin.html", typedata=typedata_tuple, given=given_tuple, result=res_tuple, assess=que_tuple, abc=abc_tuple, ts=ts, ahi=ahi, tas=tas, feeds= feeds_tuple)
if request.method == "POST":
app.config['MYSQL_DB'] = 'sql12660485'
if 'resid' in request.form:
resid = request.form.get('resid')
types = request.form.get('type')
session['id'] = resid
session['type'] = types
return redirect(url_for('result'))
elif 'delete' in request.form:
cura = mysql.cursor()
deleteId = request.form['delete']
cura.execute("DELETE FROM `assessments` WHERE `assessId`= %s", (deleteId,))
mysql.commit()
cura.close()
return redirect(url_for('admin'))
return render_template('admin.html')
@app.route('/form', methods=["GET", "POST"])
def form():
if 'email' not in session:
return redirect(url_for('login'))
if request.method == "GET":
app.config['MYSQL_DB'] = 'sql12660485'
typeid = session['type']
curf = mysql.cursor()
curf.execute("SELECT `name`, `description`, `Questions`, `types` FROM assessments WHERE assessid = %s", (typeid,))
questions = curf.fetchone()
mysql.commit()
curf.close()
return render_template("form.html", questions=questions)
if request.method == "POST":
app.config['MYSQL_DB'] = 'sql12660485'
data = request.form.to_dict()
length = len(request.form)
inp = []
for i in range(0, length):
inp.append(data['inp' + str(i + 1) + ''])
sid_obj = SentimentIntensityAnalyzer()
compound = []
for i in range(0, length):
compound.append(sid_obj.polarity_scores(data['inp' + str(i + 1) + ''])['compound'] * 100)
now = datetime.datetime.now()
cur = mysql.cursor()
query = "INSERT INTO `custom` (`Id`, `type`, `response`, `result`, `datetime`) VALUES (%s, %s, %s, %s, %s)"
cur.execute(query, (session['id'], session['type'], json.dumps(inp), json.dumps(compound), now,))
query = "UPDATE `users` SET `isdone`=%s WHERE `id`=%s"
cur.execute(query, (1, session['id'],))
cur.execute("SELECT * FROM `custom` WHERE id=%s AND type=%s", (session['id'], session['type'],))
res = cur.fetchone()
cur.execute("SELECT qval FROM `assessments` WHERE assessId=%s", (session['type'],))
qval = cur.fetchone()
multi = eval(qval[0])
happy = eval(res[4])
for j in range(len(happy)):
happy[j] = happy[j] * multi[j]
min_value = min(compound)
max_value = max(compound)
scaled_values = [(value - min_value) / (max_value - min_value) * 5 for value in compound]
happy_index = round(sum(scaled_values) / len(scaled_values), 2)
query = "UPDATE `custom` SET `happy`=%s WHERE `id`=%s AND `type`=%s"
cur.execute(query, (happy_index, session['id'], session['type'],))
cur.execute("SELECT `happy` FROM `custom` WHERE type=%s", (session['type'],))
avg_dict = cur.fetchall()
avg_list = [d[0] for d in avg_dict if isinstance(d[0], float)] + [item for d in avg_dict if isinstance(d[0], (list, tuple)) for item in d[0]]
avg_score = round(sum(avg_list)/len(avg_list), 2)
query = "UPDATE `assessments` SET `average`=%s WHERE `assessId`=%s"
cur.execute(query, (avg_score, session['type'],))
mysql.commit()
cur.close()
'''Re-render template...'''
return redirect(url_for('result'))
return redirect(url_for('result'))
@app.route('/custom', methods=["GET", "POST"])
def custom():
if 'email' not in session:
return redirect(url_for('login'))
if request.method == "GET":
if session['usertype'] == 0:
return redirect(url_for('home'))
return render_template('custom.html')
if request.method == "POST":
app.config['MYSQL_DB'] = 'sql12660485'
data = request.form.to_dict()
length = len(request.form)
inp = []
for i in range(0, int((length - 3)/2)):
inp.append(data['inpt' + str(i + 1) + ''])
sid_obj = SentimentIntensityAnalyzer()
compound = []
for i in range(0, int((length - 3)/2)):
compound.append(sid_obj.polarity_scores(data['inpt' + str(i + 1) + ''])['compound'] * 100)
types = []
for i in range(0, int((length - 3) / 2)):
types.append(int(data['select' + str(i + 1) + '']))
for i in range(len(compound)):
if compound[i] < 0:
compound[i] = -1
elif compound[i] >= 0:
compound[i] = 1
name = request.form['name']
describ = request.form['describ']
'''SQL Queries for data storing in database...'''
now = datetime.datetime.now()
cur = mysql.cursor()
query = "INSERT INTO `assessments` (`name`, `description`, `Questions`, `types`, `qval`) VALUES (%s, %s, %s, %s, %s)"
cur.execute(query, (name, describ, json.dumps(inp), json.dumps(types), json.dumps(compound),))
mysql.commit()
cur.close()
return redirect(url_for('admin'))
return render_template("custom.html")
@app.route('/result')
def result():
if 'email' not in session:
return redirect(url_for('home'))
app.config['MYSQL_DB'] = 'test'
curr = mysql.cursor()
curr.execute("SELECT * FROM `custom` WHERE id=%s AND type=%s", (session['id'], session['type'],))
res = curr.fetchone()
curr.execute("SELECT result FROM `custom` WHERE type=%s", (session['type'],))
avg = curr.fetchall()
dynamic = [list(eval(d[0])) for d in avg]
dyna = []
i = 0
for i in range(len(dynamic[i])):
temp2 = 0
for j in range(len(dynamic)):
temp2 = temp2 + dynamic[j][i]
dyna.append(temp2 / len(dynamic))
ques = []
for i in range(1, len(dyna) + 1):
ques.append("Question " + str(i) + "")
curr.execute("SELECT * FROM assessments WHERE assessid = %s", (session['type'],))
questions = curr.fetchone()
curr.execute("SELECT * FROM suggestions")
suggests = curr.fetchall()
response = []
mapper = eval(questions[4])
score = eval(res[4])
score_dict = {}
for i in range(len(mapper)):
if mapper[i] not in score_dict:
score_dict[mapper[i]] = []
score_dict[mapper[i]].append(score[i])
result_dict = {}
for key, value in score_dict.items():
temp_score = sum(value) / len(value)
avg_score = round(((temp_score + 100) / 200) * (90 - 10) + 10, 2)
if key == 1101:
if avg_score >= 66:
result_dict[key] = {"average_score": avg_score, "name": "Psychological well being",
"description": "Refers to an individual`s mental state and overall happiness, including feelings of fulfillment, purpose, and contentment.",
"suggestions_text": [list(eval(d[3])) for d in suggests if d[0] == 1101]}
elif avg_score >= 30:
result_dict[key] = {"average_score": avg_score, "name": "Psychological well being",
"description": "Refers to an individual`s mental state and overall happiness, including feelings of fulfillment, purpose, and contentment.",
"suggestions_text": [list(eval(d[2])) for d in suggests if d[0] == 1101]}
elif avg_score < 30:
result_dict[key] = {"average_score": avg_score, "name": "Psychological well being",
"description": "Refers to an individual`s mental state and overall happiness, including feelings of fulfillment, purpose, and contentment.",
"suggestions_text": [list(eval(d[1])) for d in suggests if d[0] == 1101]}
elif key == 1102:
if avg_score >= 66:
result_dict[key] = {"average_score": avg_score, "name": "Health aspects",
"description": "Refers to an individual`s physical health, including factors such as nutrition, exercise, and access to medical care.",
"suggestions_text": [list(eval(d[3])) for d in suggests if d[0] == 1102]}
elif avg_score >= 30:
result_dict[key] = {"average_score": avg_score, "name": "Health aspects",
"description": "Refers to an individual`s physical health, including factors such as nutrition, exercise, and access to medical care.",
"suggestions_text": [list(eval(d[2])) for d in suggests if d[0] == 1102]}
elif avg_score < 30:
result_dict[key] = {"average_score": avg_score, "name": "Health aspects",
"description": "Refers to an individual`s physical health, including factors such as nutrition, exercise, and access to medical care.",
"suggestions_text": [list(eval(d[1])) for d in suggests if d[0] == 1102]}
elif key == 1103:
if avg_score >= 66:
result_dict[key] = {"average_score": avg_score, "name": "Time management",
"description": "Refers to an individual`s ability to effectively manage their time and prioritize tasks to maximize productivity and reduce stress.",
"suggestions_text": [list(eval(d[3])) for d in suggests if d[0] == 1103]}
elif avg_score >= 30:
result_dict[key] = {"average_score": avg_score, "name": "Time management",
"description": "Refers to an individual`s ability to effectively manage their time and prioritize tasks to maximize productivity and reduce stress.",
"suggestions_text": [list(eval(d[2])) for d in suggests if d[0] == 1103]}
elif avg_score < 30:
result_dict[key] = {"average_score": avg_score, "name": "Time management",
"description": "Refers to an individual`s ability to effectively manage their time and prioritize tasks to maximize productivity and reduce stress.",
"suggestions_text": [list(eval(d[1])) for d in suggests if d[0] == 1103]}
elif key == 1104:
if avg_score >= 66:
result_dict[key] = {"average_score": avg_score, "name": "Educational standards",
"description": "Refers to the quality of education provided in a given community, including factors such as curriculum, teaching quality, and access to resources.",
"suggestions_text": [list(eval(d[3])) for d in suggests if d[0] == 1104]}
elif avg_score >= 30:
result_dict[key] = {"average_score": avg_score, "name": "Educational standards",
"description": "Refers to the quality of education provided in a given community, including factors such as curriculum, teaching quality, and access to resources.",
"suggestions_text": [list(eval(d[2])) for d in suggests if d[0] == 1104]}
elif avg_score < 30:
result_dict[key] = {"average_score": avg_score, "name": "Educational standards",
"description": "Refers to the quality of education provided in a given community, including factors such as curriculum, teaching quality, and access to resources.",
"suggestions_text": [list(eval(d[1])) for d in suggests if d[0] == 1104]}
elif key == 1105:
if avg_score >= 66:
result_dict[key] = {"average_score": avg_score, "name": "Cultural diversity",
"description": "Refers to the range of cultures, beliefs, and practices within a given community, and the level of acceptance and celebration of diversity.",
"suggestions_text": [list(eval(d[3])) for d in suggests if d[0] == 1105]}
elif avg_score >= 30:
result_dict[key] = {"average_score": avg_score, "name": "Cultural diversity",
"description": "Refers to the range of cultures, beliefs, and practices within a given community, and the level of acceptance and celebration of diversity.",
"suggestions_text": [list(eval(d[2])) for d in suggests if d[0] == 1105]}
elif avg_score < 30:
result_dict[key] = {"average_score": avg_score, "name": "Cultural diversity",
"description": "Refers to the range of cultures, beliefs, and practices within a given community, and the level of acceptance and celebration of diversity.",
"suggestions_text": [list(eval(d[1])) for d in suggests if d[0] == 1105]}
elif key == 1106:
if avg_score >= 66:
result_dict[key] = {"average_score": avg_score, "name": "Social well-being",
"description": "Social well-being refers to the quality of an individual`s social interactions, relationships, and sense of community belonging.",
"suggestions_text": [list(eval(d[3])) for d in suggests if d[0] == 1106]}
elif avg_score >= 30:
result_dict[key] = {"average_score": avg_score, "name": "Social well-being",
"description": "Social well-being refers to the quality of an individual`s social interactions, relationships, and sense of community belonging.",
"suggestions_text": [list(eval(d[2])) for d in suggests if d[0] == 1106]}
elif avg_score < 30:
result_dict[key] = {"average_score": avg_score, "name": "Social well-being",
"description": "Social well-being refers to the quality of an individual`s social interactions, relationships, and sense of community belonging.",
"suggestions_text": [list(eval(d[1])) for d in suggests if d[0] == 1106]}
elif key == 1107:
if avg_score >= 66:
result_dict[key] = {"average_score": avg_score, "name": "Good governance",
"description": "Refers to the effectiveness and transparency of governing systems and institutions in promoting the well-being of all members of a community.",
"suggestions_text": [list(eval(d[3])) for d in suggests if d[0] == 1107]}
elif avg_score >= 30:
result_dict[key] = {"average_score": avg_score, "name": "Good governance",
"description": "Refers to the effectiveness and transparency of governing systems and institutions in promoting the well-being of all members of a community.",
"suggestions_text": [list(eval(d[2])) for d in suggests if d[0] == 1107]}
elif avg_score < 30:
result_dict[key] = {"average_score": avg_score, "name": "Good governance",
"description": "Refers to the effectiveness and transparency of governing systems and institutions in promoting the well-being of all members of a community.",
"suggestions_text": [list(eval(d[1])) for d in suggests if d[0] == 1107]}
elif key == 1108:
if avg_score >= 66:
result_dict[key] = {"average_score": avg_score, "name": "Community vitality",
"description": "Refers to the health and vibrancy of a community, including factors such as social cohesion, civic engagement, and access to resources.",
"suggestions_text": [list(eval(d[3])) for d in suggests if d[0] == 1108]}
elif avg_score >= 30:
result_dict[key] = {"average_score": avg_score, "name": "Community vitality",
"description": "Refers to the health and vibrancy of a community, including factors such as social cohesion, civic engagement, and access to resources.",
"suggestions_text": [list(eval(d[2])) for d in suggests if d[0] == 1108]}
elif avg_score < 30:
result_dict[key] = {"average_score": avg_score, "name": "Community vitality",
"description": "Refers to the health and vibrancy of a community, including factors such as social cohesion, civic engagement, and access to resources.",
"suggestions_text": [list(eval(d[1])) for d in suggests if d[0] == 1108]}
suggest_dict = dict(sorted(result_dict.items()))
curr.execute(
"SELECT `Questions`,`response`, `result`, `datetime` FROM `custom`, `assessments` WHERE `id`=%s AND `type`=%s AND custom.type = assessments.assessId",
(session['id'], session['type'],))
details = curr.fetchone()
mysql.commit()
curr.close()
return render_template("result.html", ques=ques, res1=res[3], res2=res[4], res3=res[6], res4=res[5], res5=dyna, res6=response, res7=suggest_dict, res8=questions, res9=details)
@app.route('/logout')
def logout():
app.config['MYSQL_DB'] = 'sql12660485'
now = datetime.datetime.now()
curo = mysql.cursor()
if 'id' in session:
curo.execute("INSERT INTO session (id, email, action, actionC, datetime) VALUES (%s, %s, %s, %s, %s)", (session['id'], session['email'], 'Logged Out - Session Terminated', 0, now,))
else:
curo.execute("INSERT INTO session (email, action, actionC, datetime) VALUES (%s, %s, %s, %s)", (session['email'], 'Logged Out - Session Terminated', 0, now,))
mysql.commit()
curo.close()
session.clear()
return redirect(url_for("home"))
@app.errorhandler(Exception)
def handle_error(error):
app.logger.error(error)
error_name = error.__class__.__name__
message = f"{error_name}: {str(error)}"
return render_template('error.html', message=message), 500
if __name__=='__main__':
app.run(debug=True, host="0.0.0.0")
# app.run(debug=True)