mirror of
https://github.com/Derpy-Leggies/OnlyLegs.git
synced 2025-06-29 03:26:16 +00:00
Pagination
I hate math
This commit is contained in:
parent
f33842ead3
commit
a46192566f
6 changed files with 108 additions and 15 deletions
|
@ -1,6 +1,8 @@
|
|||
"""
|
||||
Onlylegs Gallery - Index view
|
||||
"""
|
||||
from math import ceil
|
||||
|
||||
from flask import Blueprint, render_template, request
|
||||
from werkzeug.exceptions import abort
|
||||
|
||||
|
@ -18,13 +20,30 @@ def index():
|
|||
"""
|
||||
Home page of the website, shows the feed of the latest images
|
||||
"""
|
||||
images = db_session.query(db.Posts.filename,
|
||||
db.Posts.alt,
|
||||
db.Posts.colours,
|
||||
db.Posts.created_at,
|
||||
db.Posts.id).order_by(db.Posts.id.desc()).all()
|
||||
|
||||
# meme
|
||||
if request.args.get('coffee') == 'please':
|
||||
abort(418)
|
||||
|
||||
# pagination, defaults to page 1 if no page is specified
|
||||
page = request.args.get('page', default=1, type=int)
|
||||
limit = 100
|
||||
|
||||
# get the total number of images in the database
|
||||
# calculate the total number of pages, and make sure the page number is valid
|
||||
total_images = db_session.query(db.Posts.id).count()
|
||||
pages = ceil(max(total_images, limit) / limit)
|
||||
if page > pages:
|
||||
abort(404, 'You have reached the far and beyond, ' +
|
||||
'but you will not find your answers here.')
|
||||
|
||||
# get the images for the current page
|
||||
images = (db_session.query(db.Posts.filename, db.Posts.alt, db.Posts.colours,
|
||||
db.Posts.created_at, db.Posts.id)
|
||||
.order_by(db.Posts.id.desc())
|
||||
.offset((page - 1) * limit)
|
||||
.limit(limit)
|
||||
.all())
|
||||
|
||||
return render_template('index.html', images=images)
|
||||
return render_template('index.html', images=images,
|
||||
total_images=total_images,
|
||||
pages=pages, page=page)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue