Skip to content

Commit d6a422d

Browse files
committed
Initial commit
1 parent 0b024aa commit d6a422d

File tree

93 files changed

+46762
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+46762
-0
lines changed

app.py

+131
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
from flask import Flask, flash, render_template, request, redirect, session
2+
from cs50 import SQL
3+
from tempfile import mkdtemp
4+
from helpers import login_required
5+
from werkzeug.security import check_password_hash, generate_password_hash
6+
from flask_session import Session
7+
8+
app = Flask(__name__)
9+
10+
app.config["TEMPLATES_AUTO_RELOAD"] = True
11+
12+
app.config["SESSION_FILE_DIR"] = mkdtemp()
13+
app.config["SESSION_PERMANENT"] = False
14+
app.config["SESSION_TYPE"] = "filesystem"
15+
Session(app)
16+
17+
db = SQL("sqlite:///maindb.db")
18+
19+
@app.after_request
20+
def after_request(response):
21+
response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
22+
response.headers["Expires"] = 0
23+
response.headers["Pragma"] = "no-cache"
24+
return response
25+
26+
27+
@app.route("/")
28+
def index():
29+
return render_template("index.html")
30+
31+
32+
@app.route("/login", methods = ["GET", "POST"])
33+
def login():
34+
session.clear()
35+
if request.method == "GET":
36+
return render_template("login.html")
37+
38+
if not request.form.get("username"):
39+
flash("Please provide a username")
40+
return redirect("/login")
41+
42+
elif not request.form.get("password"):
43+
flash("Kindly enter a password")
44+
return redirect("/login")
45+
46+
rows = db.execute("SELECT * FROM users WHERE username = :username",
47+
username=request.form.get("username"))
48+
if len(rows) != 1 or not check_password_hash(rows[0]["hash"], request.form.get("password")):
49+
flash("Invalid username and/or password!")
50+
return redirect("/login")
51+
session["user_id"] = rows[0]["id"]
52+
flash("You have successfully logged in.")
53+
return redirect("/home")
54+
55+
56+
57+
@app.route("/register", methods = ["GET", "POST"])
58+
def register():
59+
if request.method == "GET":
60+
return render_template("register.html")
61+
62+
if not request.form.get("fname"):
63+
flash("Enter your name.")
64+
return redirect("/register")
65+
66+
if not request.form.get("username"):
67+
flash("Username field is blank!")
68+
return redirect("/register")
69+
70+
elif not request.form.get("password"):
71+
flash("Password field is blank!")
72+
return redirect("/register")
73+
74+
elif request.form.get("password") != request.form.get("confirmpass"):
75+
flash("Passwords do not match!")
76+
return redirect("/register")
77+
else:
78+
hashpwd = generate_password_hash(request.form.get("password"))
79+
musrs = db.execute("SELECT * FROM users WHERE username=:username",
80+
username=request.form.get("username"))
81+
if len(musrs) != 0:
82+
flash("Username not available!")
83+
return redirect("/register")
84+
resp = db.execute("INSERT INTO users(fullname, usertype, semester, username, hash, lab1, lab2) VALUES(:fullname, :usertype, :semester,:username, :hash, :lab1, :lab2)", fullname=request.form.get("fname"), usertype="student", semester=request.form.get("semester"), username=request.form.get("username"), hash=hashpwd, lab1=0, lab2=0)
85+
session["user_id"] = resp
86+
return redirect("/home")
87+
88+
89+
@app.route("/logout")
90+
def logout():
91+
session.clear()
92+
flash("You have successfully logged out.")
93+
return redirect("/login")
94+
95+
96+
@app.route("/home")
97+
@login_required
98+
def home():
99+
fname = db.execute("SELECT fullname FROM users WHERE id=:cid",
100+
cid=session["user_id"])[0]["fullname"]
101+
lab1 = db.execute("SELECT lab1 FROM users WHERE id=:cid", cid=session["user_id"])[0]["lab1"]
102+
lab2 = db.execute("SELECT lab2 FROM users WHERE id=:cid", cid=session["user_id"])[0]["lab2"]
103+
return render_template("home.html",fname=fname,lab1=str(lab1),lab2=str(lab2))
104+
105+
106+
@app.route("/expa1")
107+
@login_required
108+
def expa1():
109+
return render_template("expa1.html")
110+
111+
112+
@app.route("/expa2")
113+
@login_required
114+
def expa2():
115+
return render_template("expa2.html")
116+
117+
118+
@app.route("/expb1")
119+
@login_required
120+
def expb1():
121+
return render_template("expb1.html")
122+
123+
124+
@app.route("/expb2")
125+
@login_required
126+
def expb2():
127+
return render_template("expb2.html")
128+
129+
130+
if __name__ == '__main__':
131+
app.run()

helpers.py

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from flask import redirect, render_template, request, session
2+
from functools import wraps
3+
4+
def login_required(f):
5+
@wraps(f)
6+
def decorated_function(*args, **kwargs):
7+
if session.get("user_id") is None:
8+
return redirect("/login")
9+
return f(*args, **kwargs)
10+
return decorated_function

maindb.db

12 KB
Binary file not shown.

0 commit comments

Comments
 (0)