Navbar returns a Safe node; drop redundant filter_presets mark_safe
Navbar is static chrome (a few reverse() URLs in otherwise-fixed markup), so it now returns a single Safe node wrapping that markup instead of a mark_safe string — consistent with "trusted HTML is a Safe node," and a full element tree would be ~80 lines of nesting for no gain (it owns no component JS). Page() interpolates it via str() exactly as before. filter_presets.list_presets returned HttpResponse(mark_safe(...)); HttpResponse never escapes its body, so the mark_safe was pure noise — dropped. The mark_safe calls that remain are all load-bearing and not tree children: the node engine itself (core: how a node emits its SafeString), the script-tag / scripts= string helpers, and Page()'s final document string. Full suite green (445). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+9
-3
@@ -186,10 +186,16 @@ def _main_script(mastered: bool) -> str:
|
||||
return _MAIN_SCRIPT_A + ("true" if mastered else "false") + _MAIN_SCRIPT_B
|
||||
|
||||
|
||||
def Navbar(*, today_played: str, last_7_played: str, current_year: int) -> SafeText:
|
||||
"""Top navigation bar."""
|
||||
def Navbar(*, today_played: str, last_7_played: str, current_year: int) -> "Node":
|
||||
"""Top navigation bar.
|
||||
|
||||
Static chrome, so it's a single ``Safe`` node wrapping its markup rather
|
||||
than a hand-built element tree — trusted HTML belongs in a ``Safe`` node,
|
||||
not a ``mark_safe`` string."""
|
||||
from common.components import Safe
|
||||
|
||||
logo = static("icons/schedule.png")
|
||||
return mark_safe(f"""<nav class="bg-neutral-primary-soft border-b border-default">
|
||||
return Safe(f"""<nav class="bg-neutral-primary-soft border-b border-default">
|
||||
<div class="max-w-(--breakpoint-xl) flex flex-wrap items-center justify-between mx-auto p-4">
|
||||
<a href="{reverse("games:index")}"
|
||||
class="flex items-center space-x-3 rtl:space-x-reverse">
|
||||
|
||||
Reference in New Issue
Block a user