Photo detail page: each photo gets a real page, not a bare image
/photos/view/{name} shows the photo large in the shell, every title
read from it with status chips and BGG matches, its reshoot tickets
with working dismiss, prev/next navigation with arrow keys, position
in the gallery, and a link to the raw full-size file. Gallery and
catalog photo links point here now (review's shots keep linking to the
raw image — zooming spine text is their whole purpose). The status
chip renderer moves to app.js so the catalog and photo pages can't
drift; render_page learns an `active` override so a detail page keeps
its nav section lit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -621,3 +621,15 @@ def test_pipeline_reports_badge_fields(tmp_path):
|
||||
p = _app(cfg).get("/api/pipeline").json()
|
||||
assert p["pending_review"] == 2 # one match + one edition decision
|
||||
assert p["to_add"] == 2 # header excluded
|
||||
|
||||
|
||||
def test_photo_detail_page_serves_with_photos_nav_active(tmp_path):
|
||||
web = _app(_cfg(tmp_path))
|
||||
html = web.get("/photos/view/shelf.jpg").text
|
||||
assert "all photos" in html
|
||||
# the Photos nav entry stays highlighted on the detail page
|
||||
import re
|
||||
|
||||
(current,) = re.findall(r'<a href="([^"]+)" aria-current="page"', html)
|
||||
assert current == "/photos"
|
||||
assert 'src="/static/app.js"' in html
|
||||
|
||||
Reference in New Issue
Block a user