Add inspect button in generic IndexView

pull/11129/head
Sage Abdullah 2023-09-25 14:08:18 +01:00 zatwierdzone przez Matt Westcott
rodzic be4d6a2edd
commit ed81e76b2e
2 zmienionych plików z 23 dodań i 1 usunięć

Wyświetl plik

@ -102,6 +102,7 @@ class IndexView(
add_url_name = None
add_item_label = gettext_lazy("Add")
edit_url_name = None
inspect_url_name = None
delete_url_name = None
any_permission_required = ["add", "change", "delete"]
search_fields = None
@ -364,6 +365,10 @@ class IndexView(
if self.edit_url_name:
return reverse(self.edit_url_name, args=(quote(instance.pk),))
def get_inspect_url(self, instance):
if self.inspect_url_name:
return reverse(self.inspect_url_name, args=(quote(instance.pk),))
def get_delete_url(self, instance):
if self.delete_url_name:
return reverse(self.delete_url_name, args=(quote(instance.pk),))
@ -415,6 +420,20 @@ class IndexView(
priority=10,
)
)
inspect_url = self.get_inspect_url(instance)
if inspect_url:
buttons.append(
ListingButton(
_("Inspect"),
url=inspect_url,
icon_name="info-circle",
attrs={
"aria-label": _("Inspect '%(title)s'")
% {"title": str(instance)}
},
priority=20,
)
)
delete_url = self.get_delete_url(instance)
can_delete = (
not self.permission_policy

Wyświetl plik

@ -107,7 +107,7 @@ class ModelViewSet(ViewSet):
return self.model_name
def get_common_view_kwargs(self, **kwargs):
return super().get_common_view_kwargs(
view_kwargs = super().get_common_view_kwargs(
**{
"model": self.model,
"permission_policy": self.permission_policy,
@ -122,6 +122,9 @@ class ModelViewSet(ViewSet):
**kwargs,
}
)
if self.inspect_view_enabled:
view_kwargs["inspect_url_name"] = self.get_url_name("inspect")
return view_kwargs
def get_index_view_kwargs(self, **kwargs):
return {