v0.165.0
 1from typing import Any
 2
 3from jinja2 import pass_context
 4from plain.templates import register_template_global
 5
 6from .core import SessionStore
 7from .exceptions import SessionNotAvailable
 8from .requests import get_request_session
 9
10
11@register_template_global
12@pass_context
13def get_current_session(context: dict[str, Any]) -> SessionStore | None:
14    """Get the session for the current request."""
15    request = context.get("request")
16    assert request is not None, "No request in template context"
17    try:
18        return get_request_session(request)
19    except SessionNotAvailable:
20        # Session not available (e.g., during error page rendering before middleware runs)
21        return None