-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.py
More file actions
107 lines (84 loc) · 2.88 KB
/
server.py
File metadata and controls
107 lines (84 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
from flask import Flask, render_template, send_from_directory, abort, send_file, safe_join, request
import magic
from sqlite3 import dbapi2 as sqlite
from flask_sqlalchemy import SQLAlchemy
import schedule
import emailler
import urllib.parse
import statistics
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite+pysqlite:///../grizzback/pizza.db'
db = SQLAlchemy(app)
pizzaCal = {"cheese": 1950, "pepperoni": 2210, "meat": 3020, "hawaiian": 2210}
revPizzaCal = dict((v,k) for k,v in pizzaCal.items())
class User(db.Model):
email = db.Column(db.String(80))
name = db.Column(db.String(50))
team = db.Column(db.String(20))
userid = db.Column(db.String(130), primary_key=True)
class Ptypes(db.Model):
types = db.Column(db.String(11), primary_key=True)
userid = db.Column(db.String(130), primary_key=True)
#nav bar routes
@app.route('/')
def index():
return render_template('index.html')
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/form')
def form():
return render_template('intro-form.html')
#api stuff
@app.route('/inForm', methods=['POST'])
def inForm():
print(request.form)
fName = urllib.parse.quote(request.form.get("fullName"))
eMail = urllib.parse.quote(request.form.get("email"))
userId = fName + eMail
user = User(email=eMail, name=fName, team=request.form.get("team"), userid=userId)
db.session.add(user)
for pizza in request.form.getlist('pizzas'):
thing = Ptypes(types=pizza, userid=userId )
db.session.add(thing)
db.session.commit()
#print("\n\nSchedule:")
#print(schedule.nextGame(request.form.get("team")))
if(schedule.nextGame("now") == "now"):
emailler.sendEmail(userId)
return "nice job"
@app.route('/emailForm/<uid>/<mood>')
def emailForm(uid, mood):
uid = urllib.parse.quote(uid)
pizzaS = Ptypes.query.filter_by(userid=uid).all()
rec =""
cal = []
for piz in pizzaS:
if(pizzaCal.get(piz.types, -1) != -1):
cal.append(pizzaCal.get(piz.types))
cal.sort()
if(mood == "vsad"):
mood = "Very Sad"
rec = revPizzaCal.get(max(cal))
elif(mood =="sad"):
mood="Sad"
rec = revPizzaCal.get(max(cal))
elif(mood == "vhappy"):
rec = revPizzaCal.get(min(cal))
mood="Very Happy"
elif(mood=="happy"):
mood="Happy"
rec = revPizzaCal.get(min(cal))
else:
mood= "Meh"
rec = revPizzaCal.get(statistics.median_high(cal))
return render_template("mood.html", pizza=rec, mood=mood)
#serving static files like images and js
@app.route('/static/<rfile>')
def images(rfile):
try:
return send_from_directory("./static/",rfile, mimetype=magic.from_file(safe_join("./static/", rfile), mime=True))
except:
return abort(404)
if __name__ == '__main__':
app.run(debug = True, host="0.0.0.0")