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