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