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