1from typing import Any
2
3from plain.auth.requests import get_request_user
4from plain.toolbar import ToolbarItem, register_toolbar_item
5
6from .impersonate import get_request_impersonator
7from .views.registry import registry
8
9
10@register_toolbar_item
11class AdminToolbarItem(ToolbarItem):
12 name = "Admin"
13 button_template_name = "admin/toolbar/button.html"
14
15 def get_template_context(self) -> dict[str, Any]:
16 context = super().get_template_context()
17 # Add admin-specific context for the object if it exists
18 if "object" in context:
19 obj = context["object"]
20 context["object_admin_url"] = registry.get_model_detail_url(obj)
21 context["object_class_name"] = obj.__class__.__name__
22 context["impersonator"] = get_request_impersonator(self.request)
23 context["user"] = get_request_user(self.request)
24 return context