mirror of
https://github.com/Derpy-Leggies/OnlyLegs.git
synced 2025-01-04 05:46:14 +00:00
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
"""
|
|
Onlylegs Gallery - Index view
|
|
"""
|
|
from math import ceil
|
|
|
|
from flask import Blueprint, render_template, request, current_app
|
|
from werkzeug.exceptions import abort
|
|
|
|
from sqlalchemy.orm import sessionmaker
|
|
from gallery import db
|
|
|
|
|
|
blueprint = Blueprint('gallery', __name__)
|
|
db_session = sessionmaker(bind=db.engine)
|
|
db_session = db_session()
|
|
|
|
|
|
@blueprint.route('/')
|
|
def index():
|
|
"""
|
|
Home page of the website, shows the feed of the latest images
|
|
"""
|
|
# 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 = current_app.config['UPLOAD_CONF']['max-load']
|
|
|
|
# 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,
|
|
total_images=total_images,
|
|
pages=pages, page=page)
|