mirror of
https://github.com/Derpy-Leggies/OnlyLegs.git
synced 2025-01-06 06:46:11 +00:00
93 lines
3 KiB
Python
93 lines
3 KiB
Python
"""
|
|
Onlylegs Gallery - Routing
|
|
"""
|
|
from flask import Blueprint, render_template, url_for, request
|
|
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
|
|
"""
|
|
images = db_session.query(db.Posts.file_name,
|
|
db.Posts.post_alt,
|
|
db.Posts.image_colours,
|
|
db.Posts.created_at,
|
|
db.Posts.id).order_by(db.Posts.id.desc()).all()
|
|
|
|
if request.args.get('coffee') == 'please':
|
|
abort(418)
|
|
|
|
return render_template('index.html', images=images)
|
|
|
|
|
|
@blueprint.route('/image/<int:image_id>')
|
|
def image(image_id):
|
|
"""
|
|
Image view, shows the image and its metadata
|
|
"""
|
|
# Get the image, if it doesn't exist, 404
|
|
image = db_session.query(db.Posts).filter(db.Posts.id == image_id).first()
|
|
if not image:
|
|
abort(404, 'Image not found :<')
|
|
|
|
# Get the image's author username
|
|
image.author_username = (db_session.query(db.Users.username)
|
|
.filter(db.Users.id == image.author_id)
|
|
.first()[0])
|
|
|
|
# Get the image's groups
|
|
groups = (db_session.query(db.GroupJunction.group_id)
|
|
.filter(db.GroupJunction.post_id == image_id)
|
|
.all())
|
|
|
|
# For each group, get the group data and add it to the image item
|
|
image.groups = []
|
|
for group in groups:
|
|
image.groups.append(db_session.query(db.Groups.id, db.Groups.name)
|
|
.filter(db.Groups.id == group[0])
|
|
.first())
|
|
|
|
# Get the next and previous images
|
|
next_url = (db_session.query(db.Posts.id)
|
|
.filter(db.Posts.id > image_id)
|
|
.order_by(db.Posts.id.asc())
|
|
.first())
|
|
prev_url = (db_session.query(db.Posts.id)
|
|
.filter(db.Posts.id < image_id)
|
|
.order_by(db.Posts.id.desc())
|
|
.first())
|
|
|
|
# If there is a next or previous image, get the url
|
|
if next_url:
|
|
next_url = url_for('gallery.image', image_id=next_url[0])
|
|
if prev_url:
|
|
prev_url = url_for('gallery.image', image_id=prev_url[0])
|
|
|
|
return render_template('image.html', image=image, next_url=next_url, prev_url=prev_url)
|
|
|
|
|
|
@blueprint.route('/profile')
|
|
def profile():
|
|
"""
|
|
Profile overview, shows all profiles on the onlylegs gallery
|
|
"""
|
|
return render_template('profile.html', user_id='gwa gwa')
|
|
|
|
|
|
@blueprint.route('/profile/<int:user_id>')
|
|
def profile_id(user_id):
|
|
"""
|
|
Shows user ofa given id, displays their uploads and other info
|
|
"""
|
|
return render_template('profile.html', user_id=user_id)
|