Plain is headed towards 1.0! Subscribe for development updates →

 1from __future__ import annotations
 2
 3from functools import cached_property
 4from typing import TYPE_CHECKING
 5
 6from .requests import get_request_session
 7
 8if TYPE_CHECKING:
 9    from plain.http import Request
10
11    from .core import SessionStore
12
13
14class SessionViewMixin:
15    """Mixin that adds session access to views."""
16
17    request: Request
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
27        context["session"] = self.session
28        return context