diff options
| -rw-r--r-- | app.py | 16 | ||||
| -rw-r--r-- | templates/index.html | 20 |
2 files changed, 28 insertions, 8 deletions
@@ -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/<int:num>') +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 @@ <h1>Lehrersprüche</h1> <div class="divider"></div> {% for joke in jokes %} - <div class="section row valign-wrapper"> + <div class="row section valign-wrapper"> <form class="col s2 row" action="vote" method="post"> <input type="hidden" name="id" value="{{ joke.id }}"> <button class="btn{% if joke.reports>0 %}-flat{% endif %} col s12" type="submit" name="vote" value="upvote"><i class="material-icons">thumb_up</i> {{ joke.upvotes }}</button> <button class="btn{% if joke.reports>0 %}-flat{% endif %} col s12" type="submit" name="vote" value="downvote"><i class="material-icons">thumb_down</i> {{ joke.downvotes }}</button> </form> - <div class="col s8 {% if joke.reports>0 %}grey-text{% endif %}"> - <p>{{ joke.text|safe }}</p> + <div class="valign col s8 {% if joke.reports>0 %}grey-text{% endif %}"> + {{ joke.text|safe }} </div> <form class="col s2" action="report" method="post"> <input type="hidden" name="id" value="{{ joke.id }}"> @@ -32,8 +32,18 @@ </div> <div class="divider"></div> {% endfor %} - <div class="section row"> - <form class="col s12" action="submit" method="post"> + <div class="section center"> + <ul class="pagination"> + <li{% if currentpage==0 %} class="disabled"{% endif %}><a href="/page/{{ currentpage-1 }}"><i class="material-icons">chevron_left</i></a></li> + {% for page in pages %} + <li{% if currentpage==loop.index0 %} class="active"{% endif %}><a href="/page/{{ loop.index0 }}">{{ loop.index }}</a></li> + {% endfor %} + <li{% if currentpage==loop.length-1 %} class="disabled"{% endif %}><a href="/page/{{ currentpage+1 }}"><i class="material-icons">chevron_right</i></a></li> + </ul> + </div> + <div class="divider"></div> + <div class="section"> + <form action="submit" method="post"> <div class="row valign-wrapper"> <div class="col s8 input-field"> <label for="text">Neuen Spruch hinzufügen</label> |
