Added images to settings page.

This commit is contained in:
Yaro Kasear 2025-07-29 15:25:43 -05:00
parent c9b86e846b
commit 79276d9255
2 changed files with 25 additions and 3 deletions

View file

@ -5,8 +5,8 @@ from flask import request, flash, redirect, url_for, render_template, jsonify
from . import main from . import main
from .. import db from .. import db
from ..models import Brand, Item, Area, RoomFunction, Room from ..models import Brand, Item, Area, RoomFunction, Room, Image
from ..utils.load import eager_load_room_relationships from ..utils.load import eager_load_room_relationships, chunk_list
@main.route('/settings', methods=['GET', 'POST']) @main.route('/settings', methods=['GET', 'POST'])
def settings(): def settings():
@ -66,6 +66,7 @@ def settings():
sections = db.session.query(Area).order_by(Area.name).all() sections = db.session.query(Area).order_by(Area.name).all()
functions = db.session.query(RoomFunction).order_by(RoomFunction.description).all() functions = db.session.query(RoomFunction).order_by(RoomFunction.description).all()
rooms = eager_load_room_relationships(db.session.query(Room).order_by(Room.name)).all() rooms = eager_load_room_relationships(db.session.query(Room).order_by(Room.name)).all()
images = chunk_list(db.session.query(Image).order_by(Image.timestamp).all(), 6)
return render_template('settings.html', return render_template('settings.html',
title="Settings", title="Settings",
@ -73,7 +74,8 @@ def settings():
types=[{"id": t.id, "name": t.description} for t in types], types=[{"id": t.id, "name": t.description} for t in types],
sections=[s.serialize() for s in sections], sections=[s.serialize() for s in sections],
functions=[f.serialize() for f in functions], functions=[f.serialize() for f in functions],
rooms=[r.serialize() for r in rooms] rooms=[r.serialize() for r in rooms],
image_list=images
) )
@main.route("/api/settings", methods=["POST"]) @main.route("/api/settings", methods=["POST"])

View file

@ -119,6 +119,10 @@
<button class="nav-link" id="location-tab" data-bs-toggle="tab" data-bs-target="#location-tab-pane" <button class="nav-link" id="location-tab" data-bs-toggle="tab" data-bs-target="#location-tab-pane"
type="button">Location</button> type="button">Location</button>
</li> </li>
<li class="nav-item">
<button class="nav-link" id="photo-tab" data-bs-toggle="tab" data-bs-target="#images-tab-pane"
type="button">Images</button>
</li>
</ul> </ul>
<div class="tab-content" id="tabContent"> <div class="tab-content" id="tabContent">
<div class="tab-pane fade show active border border-top-0 p-3" id="inventory-tab-pane"> <div class="tab-pane fade show active border border-top-0 p-3" id="inventory-tab-pane">
@ -195,6 +199,22 @@
</div> </div>
</div> </div>
</div> </div>
<div class="tab-pane fade border border-top-0 p-3" id="images-tab-pane">
<div class="container border rounded" style="max-height: 60vh; overflow-y: auto;">
{% for chunk in image_list %}
<div class="row my-3">
{% for image in chunk %}
<div class="col mx-3">
{{ images.render_image(
id=image.id,
image=image
) }}
</div>
{% endfor %}
</div>
{% endfor %}
</div>
</div>
</div> </div>
<div class="modal fade" id="roomEditor" data-bs-backdrop="static" tabindex="-1"> <div class="modal fade" id="roomEditor" data-bs-backdrop="static" tabindex="-1">
<div class="modal-dialog"> <div class="modal-dialog">