shoplist2/shop.py

92 lines
2.5 KiB
Python

from flask import Flask, render_template, make_response, request, redirect, url_for, session
from pprint import pprint
import sqlite3
import os.path
DBNAME = "list.db"
MOBILES = ["android", "iphone", "blackberry"]
def doesDBExist(DBNAME):
try:
if not os.path.isfile(DBNAME):
conn = sqlite3.connect(DBNAME)
conn.cursor().execute('''CREATE TABLE SHOPLIST (item text, cost real, gotten integer, requester text)''')
conn.close()
except:
return False
return True
def runQuery(query):
conn = sqlite3.connect(DBNAME)
c = conn.cursor()
ret = c.execute(query)
conn.commit()
return ret
def readFromDB():
query = '''select rowid,* from shoplist'''
return runQuery(query)
def findByName(name):
conn = sqlite3.connect(DBNAME)
query = '''select * from shoplist where requester like ''' + name
results = conn.cursor().execute(query).findall()
conn.close()
return results
def insertToDB(data):
query = f"INSERT INTO SHOPLIST VALUES (\"{data['item']}\", 0, 0, \"{data['name']}\")"
runQuery(query)
def deleteRow(rowID):
query = f"DELETE FROM SHOPLIST WHERE ROWID = {rowID}"
runQuery(query)
def getItem(rowID):
query = f"UPDATE shoplist set gotten = 1 where rowid = {rowID}"
runQuery(query)
app = Flask(__name__)
app.config["DEBUG"] = True
app.secret_key = b'*$#@U9423jr92jioJKL_)_;dasfj()12'
@app.route('/')
def index():
if 'allowed' not in session:
data = {"title":"Login"}
return render_template("auth.html", data=data)
query = readFromDB()
data = {"title":"Shopping List", "results":query}
for device in MOBILES:
if device in request.user_agent.platform:
return render_template('mobile.html', data=data)
return render_template('index.html', data=data)
@app.route('/post', methods=['POST'])
def handle_data():
if "addValue" in request.form:
for x in request.form:
# print(x)
if request.form[x] == '':
return redirect(url_for('index'))
insertToDB(request.form)
if "rem" in request.form:
print(request.form["rem"])
deleteRow(request.form["rem"])
if "got" in request.form:
getItem(request.form["got"])
if "loginform" in request.form:
if request.form["password"] == "theloves2020":
session["allowed"] = "allowed"
return redirect(url_for('index'))
if __name__ == '__main__':
doesDBExist(DBNAME)
app.run()