-
Notifications
You must be signed in to change notification settings - Fork 0
/
routes.py
163 lines (143 loc) · 6.31 KB
/
routes.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
160
161
162
163
from app import app
from db import db
from flask import redirect, request, session, render_template, make_response
import base64
import users
import actions
@app.route("/")
def index():
sql = "SELECT * FROM news WHERE visible=1 ORDER BY id DESC"
result = db.session.execute(sql)
news = result.fetchall()
return render_template("news.html", news=news, topics=actions.gettopics(), amount = actions.getbookmarks(), message="")
@app.route("/news/<int:id>")
def news(id):
sql = "SELECT * FROM news WHERE id=:id AND visible=1"
result = db.session.execute(sql, {"id":id})
sql2 = "SELECT * FROM comments WHERE news_id=:id AND visible=1 "
result2 = db.session.execute(sql2, {"id":id})
news = result.fetchall()
comments = result2.fetchall()
actions.addview(id)
bookmarked = actions.isbookmarked(id)
sqlcheck = "SELECT COUNT(*) FROM images WHERE news_id=:id"
resultcheck = db.session.execute(sqlcheck, {"id":id})
amount = resultcheck.fetchone()[0]
if amount == 0:
return render_template("piece.html", news=news, comments=comments, topics=actions.gettopics(), amount=actions.getbookmarks(), bookmarked=bookmarked)
sql3 = "SELECT data FROM images WHERE news_id=:id"
result3 = db.session.execute(sql3, {"id":id})
image = result3.fetchone()[0]
image64 = base64.b64encode(image)
return render_template("piece.html", news=news, comments=comments, image=image64.decode('utf-8'), topics=actions.gettopics(), amount=actions.getbookmarks(), bookmarked=bookmarked)
@app.route("/mostviewed")
def mostviewed():
sql = "SELECT * FROM news WHERE visible=1 ORDER BY views DESC"
result = db.session.execute(sql)
news = result.fetchall()
return render_template("news.html", news=news, topics=actions.gettopics(), amount=actions.getbookmarks(), message="Luetuimmat uutiset:")
@app.route("/<string:topic>")
def topics(topic):
sql = "SELECT * FROM news WHERE topic=:topic AND visible=1"
result = db.session.execute(sql, {"topic":topic})
news = result.fetchall()
return render_template("news.html", news=news, topics=actions.gettopics(), topic = topic, amount=actions.getbookmarks(), message="aiheen {} uutiset:".format(topic))
@app.route("/create")
def create():
return render_template("register.html")
@app.route("/register", methods=["GET","POST"])
def register():
if request.method == "GET":
return render_template("register.html")
if request.method == "POST":
username = request.form["username"]
password = request.form["password"]
usertype = request.form["usertype"]
message = users.register(username,password,usertype)
if message != True:
return render_template("register.html", message=message)
return redirect("/")
@app.route("/login", methods=["POST"])
def login():
if request.method == "POST":
username = request.form["username"]
password = request.form["password"]
if users.login(username,password):
return redirect(request.referrer)
else:
return render_template("error.html",message="Väärä tunnus tai salasana")
@app.route("/logout")
def logout():
users.logout()
return redirect(request.referrer)
@app.route("/result")
def result():
search = request.args["search"]
sql = "SELECT * FROM news WHERE (LOWER(title) LIKE LOWER(:search) OR LOWER(body) LIKE LOWER(:search) OR LOWER(topic) LIKE LOWER(:search)) AND visible=1"
result = db.session.execute(sql,{"search":"%"+search+"%"})
news = result.fetchall()
return render_template("news.html", news=news, search=search, topics=actions.gettopics(),amount=actions.getbookmarks(), message="Tulokset haulle '{}':".format(search))
@app.route("/comment", methods=["POST"])
def comment():
comment = request.form["comment"]
username = session["username"]
news_id = request.form["news_id"]
message = actions.comment(news_id,username,comment)
if message != True:
return render_template("error.html", message = message)
return redirect("/news/"+news_id)
@app.route("/newpiece")
def newpiece():
return render_template("newpiece.html", topics=actions.gettopics(), amount=actions.getbookmarks())
@app.route("/publish", methods=["POST"])
def publish():
username = session["username"]
title = request.form["title"]
body = request.form["body"]
topic = request.form["topic"]
file = request.files["file"]
message = actions.publish(username, title, body, file, topic)
if message != True:
return render_template("error.html", message=message)
elif message == False:
return render_template("error.html",message="Virhe tapahtui. Ehkä et ole toimittaja")
return redirect("/")
@app.route("/editpiece", methods=["POST"])
def editpiece():
id = request.form["id"]
title = request.form["title"]
body = request.form["body"]
topic = request.form["topic"]
return render_template("editpiece.html", id=id, title=title, body=body, topic=topic, topics=actions.gettopics(), amount=actions.getbookmarks())
@app.route("/commitedit", methods=["POST"])
def commitedit():
id = request.form["id"]
title = request.form["title"]
body = request.form["body"]
message = actions.commitedit(id, title, body)
if message != True:
return render_template("error.html", message=message)
return redirect("/news/" + id)
@app.route("/deletepiece", methods=["POST"])
def deletepiece():
id = request.form["id"]
actions.deletepiece(id)
return redirect("/")
@app.route("/deletecomment", methods=["POST"])
def deletecomment():
id = request.form["id"]
news_id = request.form["news_id"]
actions.deletecomment(id, news_id)
return redirect(request.referrer)
@app.route("/swapbookmark", methods=["POST"])
def swapbookmark():
news_id = request.form["news_id"]
actions.swapbookmark(news_id)
return redirect(request.referrer)
@app.route("/bookmarks")
def viewbookmarks():
username = session["username"]
sql = "SELECT * FROM NEWS WHERE visible=1 AND id IN (SELECT news_id FROM bookmarks WHERE username=:username AND visible=1)"
result = db.session.execute(sql, {"username":username})
news = result.fetchall()
return render_template("news.html", news=news, topics=actions.gettopics(), amount = actions.getbookmarks(), message="Lukulistasi uutiset: ")