1from __future__ import annotations
 2
 3from functools import cached_property
 4from typing import Any
 5
 6from plain.toolbar import ToolbarItem, register_toolbar_item
 7
 8from .core import Observer
 9
10
11@register_toolbar_item
12class ObserverToolbarItem(ToolbarItem):
13    name = "Observer"
14    panel_template_name = "toolbar/observer.html"
15    button_template_name = "toolbar/observer_button.html"
16
17    @cached_property
18    def observer(self) -> Observer:
19        """Get the Observer instance for this request."""
20        return Observer.from_request(self.request)
21
22    def get_template_context(self) -> dict[str, Any]:
23        context = super().get_template_context()
24        context["observer"] = self.observer
25        return context