forked from jso123450/01-Bloginator
/
app.py
159 lines (145 loc) · 5.23 KB
/
app.py
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# imports
from flask import Flask, render_template, request, session, redirect, url_for,Markup
import sqlite3, utils
#flask
app = Flask(__name__)
#link to the index; just a render_template & login
@app.route("/", methods=["GET","POST"])
@app.route("/home", methods=["GET","POST"])
def home():
if 'un' in session and session['un'] != 0:
return render_template("home.html",un=session['un'])
else:
return login_register()
#link to the about page; just a render_template
@app.route("/about")
def about():
if 'un' in session and session['un'] != 0:
return render_template("about.html",un=session['un'])
else:
return render_template("about.html")
#woo cool popup!
@app.route("/login",methods=["GET","POST"])
def login_register():
if request.method=="GET":
if 'un' in session and session['un'] != 0:
user = session['un']
return redirect(url_for("home"))
else:
return render_template("home.html",unlogged="You are not currently logged in.")
else:
#button = request.form['button']
if 'in_username' in request.form:
user = request.form['in_username']
passwd = request.form['in_password']
if utils.authenticate(user,passwd):
session['un'] = user
session['pw'] = passwd
return redirect(url_for("blog"))
else:
error = "INVALID USERNAME AND/OR PASSWORD"
return render_template("home.html",error=error)
else:
user = request.form['regis_username']
passwd = request.form['regis_password']
# conn = sqlite3.connect('bloginator.db')
# c = conn.cursor()
# c.execute('select * from users where username="'+user+'"')
# r = c.fetchall()
# conn.commit()
if utils.newUser(user,passwd):
success = "Account Created!"
session['un'] = user
session['pw'] = passwd
return redirect(url_for("blog"))
else:
failure = "There is already an account with this username"
return render_template("home.html",created=failure)
# reset the username & pw in the session
@app.route("/logout")
def logout():
session['un'] = 0
session['pw'] = 0
return redirect(url_for("home"))
# view all stories currently posted
@app.route("/blog", methods=["GET", "POST"])
def blog():
if request.method=="GET":
if 'un' not in session or session['un']==0:
return redirect(url_for("home"))
else:
user = session['un']
s = ""
stories = utils.getAllPosts()
for p in stories:
s += "<br>"
s += "<div class='boxed2 type center'>"
s += "<h1> <a href='story/%s'> %s</a> </h1>" %(p[1], p[1])
s += "<h2> Posted by: %s </h2>" %p[0]
s += "<h3> %s </h3>" %p[2] + "</div><br>"
s = Markup(s)
return render_template("blog.html",un=user,stories=s)
else:
ti = request.form["title"]
con = request.form["post_content"]
utils.Post(session['un'],ti,con)
return redirect(url_for("blog"))
#view individual stories
@app.route("/story/<title>", methods=["GET", "POST"])
def story(title=""):
if request.method=="GET":
if 'un' not in session or session['un']==0:
return redirect(url_for("home"))
else:
user = session['un']
story = utils.getPost(title)
if len(story) == 0:
return redirect(url_for("blog"))
#return render_template("home.html")
else:
story = story[0]
return render_template("story.html",un=user,title=story[1],user=story[0],content=story[2])
else:
content = request.form['post_content']
utils.edit(session['un'], title, content)
return redirect(url_for("profile"))
#delete story
@app.route("/delete/<user>/<title>", methods=["GET", "POST"])
def delete(user="",title=""):
if 'un' not in session or session['un']==0:
return redirect(url_for("home"))
else:
utils.delete(user, title)
return redirect(url_for("profile"))
# View your own Profile: display username, and list of post titles
@app.route("/profile")
def profile():
user = session['un']
story = utils.getUserPosts(user)
if len(story) != 0:
s = ""
for p in story:
s += "<h1> <a href='story/%s'> %s</a> </h1><br>" %(p[1], p[1])
s = Markup(s)
return render_template("profile.html",un=user,stories=s)
else:
return render_template("profile.html",un=user)
# View all Members
@app.route("/members")
def members():
users = utils.getUsers()
s = ""
for u in users:
s+= "<div type='boxed2 type center'>"
s+= "%s" %u[0]
s+= "</div>"
s = Markup(s)
if 'un' in session and session['un'] != 0:
return render_template("members.html",members=s,un=session['un'])
else:
return render_template("members.html",members=s)
#running
if __name__ == "__main__":
app.debug = True
app.secret_key = "whatsthisfor"
app.run(host='0.0.0.0',port=8000)