summaryrefslogtreecommitdiff
path: root/app.py
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2016-06-02 19:18:59 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2016-06-02 19:18:59 +0200
commit5d1ed334512c4b0229f845cf8792080c79a8c792 (patch)
tree391e415b9056c4384dce9a283b11a2a4a8101085 /app.py
parent83a87a3ac93a50e42ff6bc26fdfbab8eecbf314f (diff)
downloadjokevote-5d1ed334512c4b0229f845cf8792080c79a8c792.tar.gz
jokevote-5d1ed334512c4b0229f845cf8792080c79a8c792.zip
allow joke submitters to delete
Diffstat (limited to 'app.py')
-rw-r--r--app.py33
1 files changed, 29 insertions, 4 deletions
diff --git a/app.py b/app.py
index f8dad34..6ef447e 100644
--- a/app.py
+++ b/app.py
@@ -113,14 +113,17 @@ class dbProxy(object):
return score
def getPages(self, perpage):
- l = self.c.execute("SELECT COUNT(*) FROM v1_jokes").fetchone()['COUNT(*)']
+ l = len(self.getJokes())-1
return int(l/perpage)+1
- def getJokes(self, perpage, page, ip):
- user = self.userByIp(ip)
+ def getJokes(self, perpage=None, page=None, ip=None):
+ user = self.userByIp(ip) if ip else -1
ret_jokes = []
jokes = self.c.execute("SELECT * FROM v1_jokes").fetchall()
for joke in jokes:
+ if not self.c.execute("SELECT COUNT(*) FROM v1_votes WHERE type='delete' AND joke=?", (joke['id'],)).fetchone()['COUNT(*)'] == 0:
+ continue
+
ret_joke = {
'id': joke['id'],
}
@@ -142,7 +145,9 @@ class dbProxy(object):
ret_jokes.append(ret_joke)
ret_jokes = sorted(ret_jokes, key=self.sort, reverse=True)
- return ret_jokes[page*perpage:(page+1)*perpage]
+ if page != None and perpage != None:
+ return ret_jokes[page*perpage:(page+1)*perpage]
+ return ret_jokes
def userByIp(self, ip):
user = self.c.execute("SELECT * FROM v1_users WHERE identifier=?", (ip,)).fetchone()
@@ -158,6 +163,11 @@ class dbProxy(object):
self.c.execute("INSERT INTO v1_jokes(text, format, user) VALUES(?, 'markdown', ?)", (text, user))
self.conn.commit()
+ def removeJoke(self, objectId, ip):
+ user = self.userByIp(ip)
+ self.c.execute("INSERT INTO v1_votes(joke, user, type) VALUES(?, ?, 'delete')", (objectId, user))
+ self.conn.commit()
+
def voteJoke(self, objectId, down, ip):
user = self.userByIp(ip)
self.c.execute("INSERT INTO v1_votes(joke, user, type) VALUES(?, ?, ?)", (objectId, user, 'down' if down else 'up'))
@@ -174,6 +184,12 @@ class dbProxy(object):
votes = [v['joke'] for v in votes]
return votes
+ def getUserJokes(self, ip):
+ user = self.userByIp(ip)
+ jokes = self.c.execute("SELECT id FROM v1_jokes WHERE user=?", (user,)).fetchall()
+ jokes = [j['id'] for j in jokes]
+ return jokes
+
def db():
db = getattr(g, "_database", None)
@@ -228,6 +244,15 @@ def report():
db().reportJoke(objectId, ip)
return redirect('/page/' + page)
+@app.route('/delete', methods=['POST'])
+def delete():
+ objectId = int(request.form['id'])
+ page = request.form['redirpage']
+ ip = request.remote_addr
+ if objectId in db().getUserJokes(ip):
+ db().removeJoke(objectId, ip)
+ return redirect('/page/' + page)
+
@app.route('/static/<path:path>')
def get_static(path):
return send_from_directory('static', path)