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