Fixes #16232: Fix inclusion of bulk action checkboxes on dynamic tables

This commit is contained in:
Jeremy Stretch 2024-05-22 08:28:38 -04:00
parent 97f8f94ebb
commit 83d3de276b
3 changed files with 6 additions and 4 deletions

View File

@ -1,4 +1,5 @@
from copy import deepcopy from copy import deepcopy
from functools import cached_property
import django_tables2 as tables import django_tables2 as tables
from django.contrib.auth.models import AnonymousUser from django.contrib.auth.models import AnonymousUser
@ -189,6 +190,7 @@ class NetBoxTable(BaseTable):
actions = columns.ActionsColumn() actions = columns.ActionsColumn()
exempt_columns = ('pk', 'actions') exempt_columns = ('pk', 'actions')
embedded = False
class Meta(BaseTable.Meta): class Meta(BaseTable.Meta):
pass pass
@ -218,12 +220,12 @@ class NetBoxTable(BaseTable):
super().__init__(*args, extra_columns=extra_columns, **kwargs) super().__init__(*args, extra_columns=extra_columns, **kwargs)
@property @cached_property
def htmx_url(self): def htmx_url(self):
""" """
Return the base HTML request URL for embedded tables. Return the base HTML request URL for embedded tables.
""" """
if getattr(self, 'embedded', False): if self.embedded:
viewname = get_viewname(self._meta.model, action='list') viewname = get_viewname(self._meta.model, action='list')
try: try:
return reverse(viewname) return reverse(viewname)

View File

@ -163,7 +163,7 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin):
# If this is an HTMX request, return only the rendered table HTML # If this is an HTMX request, return only the rendered table HTML
if htmx_partial(request): if htmx_partial(request):
if not request.htmx.target: if request.GET.get('embedded', False):
table.embedded = True table.embedded = True
# Hide selection checkboxes # Hide selection checkboxes
if 'pk' in table.base_columns: if 'pk' in table.base_columns:

View File

@ -1,5 +1,5 @@
<div class="htmx-container table-responsive" <div class="htmx-container table-responsive"
hx-get="{% url viewname %}{% if url_params %}?{{ url_params.urlencode }}{% endif %}" hx-get="{% url viewname %}?embedded=True{% if url_params %}&{{ url_params.urlencode }}{% endif %}"
hx-target="this" hx-target="this"
hx-trigger="load" hx-select=".htmx-container" hx-swap="outerHTML" hx-trigger="load" hx-select=".htmx-container" hx-swap="outerHTML"
></div> ></div>