1from __future__ import annotations
 2
 3from functools import cached_property
 4from typing import TYPE_CHECKING
 5
 6from plain.views import View
 7
 8from .requests import get_request_session
 9
10if TYPE_CHECKING:
11    from .core import SessionStore
12
13__all__ = ["SessionView"]
14
15
16class SessionView(View):
17    """View with session access."""
18
19    @cached_property
20    def session(self) -> SessionStore:
21        """Get the session for this request."""
22        return get_request_session(self.request)
23
24    def get_template_context(self) -> dict:
25        """Add session to template context."""
26        context = super().get_template_context()  # type: ignore[misc]
27        context["session"] = self.session
28        return context