Fix subfolder files

This commit is contained in:
Timothy Farrell 2026-05-08 21:39:07 +00:00
parent 188454667a
commit a4c8bd8a01
2 changed files with 25 additions and 37 deletions

44
main.py
View File

@ -792,43 +792,13 @@ def _render_folder_index_page(
template = string.Template(content)
# Build folder index sidebar HTML
prefix = path.rstrip("/") or ""
lines: list[str] = []
# Breadcrumb
lines.append("<nav class='breadcrumb'>")
lines.append('<a href="/navigate/">/</a>')
if prefix:
parts = prefix.split("/")
accumulated = ""
for part in parts:
accumulated += f"{part}/"
lines.append(f'<a href="/navigate/{accumulated}">{part}</a>')
lines.append("</nav>")
# Folders
for folder in folders:
folder_path = f"{prefix}{folder}/" if prefix else f"{folder}/"
lines.append(
f'<div class="index-item folder">'
f'<a href="/navigate/{folder_path}">📁 {folder}</a>'
f"</div>"
)
# Files
for file in files:
file_path = f"{prefix}{file}" if prefix else file
href_params = ""
if current_order is not None and current_delay is not None:
href_params = f"?order={current_order}&delay={current_delay}"
lines.append(
f'<div class="index-item file">'
f'<a href="/navigate/{file_path}{href_params}">📄 {file}</a>'
f"</div>"
)
folder_index_html = "\n".join(lines)
# Build folder index sidebar HTML using recursive tree renderer
folder_path = path.rstrip("/") or None
folder_index_html = _render_folder_index_html(
current_path=folder_path,
current_order=current_order,
current_delay=current_delay,
)
content = template.substitute(
img_url="#",

View File

@ -106,6 +106,24 @@ class TestNavigatePage:
response = await client_zip_navigate.get("/navigate/")
assert "/navigate/top.txt" in response.text
async def test_subfolder_index_shows_nested_files(
self, client_zip_navigate: AsyncClient
) -> None:
"""Subfolder index shows files within that folder."""
response = await client_zip_navigate.get("/navigate/folder/")
assert response.status_code == 200
assert "/navigate/folder/deep.txt" in response.text
assert "/navigate/folder/image.png" in response.text
async def test_subfolder_index_shows_full_tree(
self, client_zip_navigate: AsyncClient
) -> None:
"""Subfolder index sidebar shows full tree from root."""
response = await client_zip_navigate.get("/navigate/folder/")
assert response.status_code == 200
# Should still show root-level items in the tree
assert "/navigate/top.txt" in response.text
async def test_file_page_has_sidebar(
self, client_zip_navigate: AsyncClient
) -> None: