From 30d350d10a3e740f4440c469d642f49165ce994c Mon Sep 17 00:00:00 2001 From: schneefux Date: Sat, 28 May 2016 20:19:15 +0200 Subject: add pagination --- app.py | 16 +++++++++++++--- templates/index.html | 20 +++++++++++++++----- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/app.py b/app.py index 225c167..78c97f2 100644 --- a/app.py +++ b/app.py @@ -35,8 +35,12 @@ class dbProxy(object): score = 1/interactions * (joke["upvotes"]+1)/interactions return score - def getJokes(self): - jokes = self.c.execute("SELECT * FROM jokes").fetchall() + def getPages(self, perpage): + l = self.c.execute("SELECT COUNT(*) FROM jokes").fetchone()['COUNT(*)'] + return int(l/perpage)+1 + + def getJokes(self, perpage, page): + jokes = self.c.execute("SELECT * FROM jokes LIMIT ? OFFSET ?", (perpage, perpage*page)).fetchall() jokes = sorted(jokes, key=self.sort, reverse=True) return jokes @@ -64,6 +68,7 @@ def db(): return db app = Flask(__name__) +PERPAGE = 10 @app.teardown_appcontext def close_db(exception): @@ -73,7 +78,12 @@ def close_db(exception): @app.route('/') def root(): - return render_template('index.html', jokes=db().getJokes()) + return page(0) + +@app.route('/page/') +def page(num): + numpages = db().getPages(PERPAGE) + return render_template('index.html', currentpage=num, pages=[[]]*numpages, jokes=db().getJokes(PERPAGE, num)) @app.route('/submit', methods=['POST']) def submit(): diff --git a/templates/index.html b/templates/index.html index ca8f25b..08d89be 100644 --- a/templates/index.html +++ b/templates/index.html @@ -13,14 +13,14 @@

Lehrersprüche

{% for joke in jokes %} -
+
-
-

{{ joke.text|safe }}

+
+ {{ joke.text|safe }}
@@ -32,8 +32,18 @@
{% endfor %} -
- +
+ +
+
+
+
-- cgit v1.3.1