initial functionality and styling pass
This commit is contained in:
+62
-1
@@ -1,9 +1,70 @@
|
||||
# app/main.py
|
||||
|
||||
from flask import Blueprint, render_template
|
||||
from flask import Blueprint, render_template, flash, redirect, url_for, abort, send_from_directory, request
|
||||
from flask_login import login_required, current_user
|
||||
|
||||
from sqlalchemy import desc, func
|
||||
|
||||
from app.utils.image_importer import import_images_task
|
||||
from app.models import ImageRecord
|
||||
from app import db
|
||||
import os
|
||||
|
||||
main = Blueprint('main', __name__)
|
||||
|
||||
@main.route('/')
|
||||
def index():
|
||||
return render_template('index.html')
|
||||
|
||||
@main.route('/gallery')
|
||||
@login_required
|
||||
def gallery():
|
||||
recent_images = 21
|
||||
images = ImageRecord.query.order_by(
|
||||
desc(func.coalesce(ImageRecord.taken_at, ImageRecord.imported_at))
|
||||
).limit(recent_images).all()
|
||||
return render_template('gallery.html', images=images)
|
||||
|
||||
@main.route('/static/images/<path:filename>')
|
||||
def serve_image(filename):
|
||||
return send_from_directory('/images', filename)
|
||||
|
||||
@main.route('/artist/<artist_name>')
|
||||
def artist_gallery(artist_name):
|
||||
per_page=49
|
||||
page = request.args.get('page', 1, type=int)
|
||||
images = ImageRecord.query.filter_by(artist=artist_name).order_by(
|
||||
desc(func.coalesce(ImageRecord.taken_at, ImageRecord.imported_at))
|
||||
).paginate(page=page, per_page=per_page)
|
||||
return render_template('artist_gallery.html', images=images, artist=artist_name)
|
||||
|
||||
|
||||
@main.route('/settings')
|
||||
@login_required
|
||||
def settings():
|
||||
if not current_user.is_admin:
|
||||
abort(403)
|
||||
return render_template('settings.html')
|
||||
|
||||
@main.route('/import-images')
|
||||
@login_required
|
||||
def trigger_image_import():
|
||||
if not current_user.is_admin:
|
||||
abort(403)
|
||||
source_dir = '/import'
|
||||
dest_dir = '/images'
|
||||
|
||||
result = import_images_task(source_dir, dest_dir)
|
||||
flash(f"Image import completed: {result}")
|
||||
return redirect(url_for('main.settings'))
|
||||
|
||||
@main.route('/reset-db', methods=['POST'])
|
||||
@login_required
|
||||
def reset_db():
|
||||
if not current_user.is_admin:
|
||||
abort(403)
|
||||
|
||||
ImageRecord.query.delete()
|
||||
db.session.commit()
|
||||
flash("Database has been reset. All image records removed.", "info")
|
||||
return redirect(url_for('main.settings'))
|
||||
Reference in New Issue
Block a user