improved Modal with zoom and pagination. also implementing thumbnail generation

This commit is contained in:
Bryan Van Deusen
2025-08-01 23:19:17 -04:00
parent e3a4c348f1
commit 63918363c1
15 changed files with 536 additions and 176 deletions
+42 -6
View File
@@ -30,11 +30,22 @@ def index():
@main.route('/gallery')
@login_required
def gallery():
recent_images = 21
per_page = 35
page = request.args.get('page', 1, type=int)
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)
).paginate(page=page, per_page=per_page)
return render_template(
'gallery.html',
images=images,
has_next=images.has_next,
next_page_url=url_for('main.gallery', page=images.next_num) if images.has_next else '',
has_prev=images.has_prev,
prev_page_url=url_for('main.gallery', page=images.prev_num) if images.has_prev else ''
)
@main.route('/images/<path:filename>')
def serve_image(filename):
@@ -43,12 +54,21 @@ def serve_image(filename):
@main.route('/artist/<artist_name>')
@login_required
def artist_gallery(artist_name):
per_page=49
per_page = 35
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)
return render_template(
'artist_gallery.html',
images=images,
artist=artist_name,
has_next=images.has_next,
next_page_url=url_for('main.artist_gallery', artist_name=artist_name, page=images.next_num) if images.has_next else '',
has_prev=images.has_prev,
prev_page_url=url_for('main.artist_gallery', artist_name=artist_name, page=images.prev_num) if images.has_prev else ''
)
@main.route('/artists')
@login_required
@@ -82,12 +102,28 @@ def settings():
abort(403)
return render_template('settings.html')
@main.route('/trigger-thumbnail-generation', methods=['POST'])
@login_required
def trigger_thumbnail_generation():
if not current_user.is_admin:
flash("You do not have permission to perform this action.", "danger")
return redirect(url_for('main.settings'))
try:
with open('/import/thumbnail.flag', 'w') as f:
f.write("trigger")
flash("Thumbnail regeneration has been triggered.", "success")
except Exception as e:
flash(f"Failed to trigger thumbnail regeneration: {e}", "danger")
return redirect(url_for('main.settings'))
@main.route('/import-images')
@login_required
def trigger_image_import():
with open('/import/trigger.flag', 'w') as f:
f.write('start')
flash("Image import triggered.")
flash("Image import triggered.", "success")
return redirect(url_for('main.settings'))
@main.route('/reset-db', methods=['POST'])