99 lines
2.7 KiB
Python
99 lines
2.7 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)
|
|
|
|
def unGetItem(rowID):
|
|
query = f"UPDATE shoplist set gotten = 0 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 "ungot" in request.form:
|
|
unGetItem(request.form["ungot"])
|
|
|
|
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(host="0.0.0.0")
|