mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 09:16:10 -06:00
Introduce htmx_table template tag for embedding HTMX-backed object tables
This commit is contained in:
parent
fd33d3b248
commit
ced47590b7
@ -236,9 +236,9 @@ class ActionsColumn(tables.Column):
|
|||||||
model = table.Meta.model
|
model = table.Meta.model
|
||||||
if request := getattr(table, 'context', {}).get('request'):
|
if request := getattr(table, 'context', {}).get('request'):
|
||||||
return_url = request.GET.get('return_url', request.get_full_path())
|
return_url = request.GET.get('return_url', request.get_full_path())
|
||||||
|
url_appendix = f'?return_url={quote(return_url)}'
|
||||||
else:
|
else:
|
||||||
return_url = ''
|
url_appendix = ''
|
||||||
url_appendix = f'?return_url={quote(return_url)}' if return_url else ''
|
|
||||||
|
|
||||||
html = ''
|
html = ''
|
||||||
|
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
{% load helpers %}
|
{% load helpers %}
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h5 class="card-header">
|
<h5 class="card-header">Images</h5>
|
||||||
Images
|
{% htmx_table 'extras:imageattachment_list' content_type_id=object|content_type_id object_id=object.pk %}
|
||||||
</h5>
|
|
||||||
<div class="card-body htmx-container table-responsive"
|
|
||||||
hx-get="{% url 'extras:imageattachment_list' %}?content_type_id={{ object|content_type_id }}&object_id={{ object.pk }}&return_url={{ request.path }}"
|
|
||||||
hx-trigger="load"></div>
|
|
||||||
{% if perms.extras.add_imageattachment %}
|
{% if perms.extras.add_imageattachment %}
|
||||||
<div class="card-footer text-end noprint">
|
<div class="card-footer text-end noprint">
|
||||||
<a href="{% url 'extras:imageattachment_add' %}?content_type={{ object|content_type_id }}&object_id={{ object.pk }}" class="btn btn-primary btn-sm">
|
<a href="{% url 'extras:imageattachment_add' %}?content_type={{ object|content_type_id }}&object_id={{ object.pk }}" class="btn btn-primary btn-sm">
|
||||||
|
4
netbox/utilities/templates/builtins/htmx_table.html
Normal file
4
netbox/utilities/templates/builtins/htmx_table.html
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<div class="card-body htmx-container table-responsive"
|
||||||
|
hx-get="{% url viewname %}{% if url_params %}?{{ url_params.urlencode }}{% endif %}"
|
||||||
|
hx-trigger="load"
|
||||||
|
></div>
|
@ -1,4 +1,5 @@
|
|||||||
from django import template
|
from django import template
|
||||||
|
from django.http import QueryDict
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'badge',
|
'badge',
|
||||||
@ -74,3 +75,22 @@ def checkmark(value, show_false=True, true='Yes', false='No'):
|
|||||||
'true_label': true,
|
'true_label': true,
|
||||||
'false_label': false,
|
'false_label': false,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@register.inclusion_tag('builtins/htmx_table.html', takes_context=True)
|
||||||
|
def htmx_table(context, viewname, return_url=None, **kwargs):
|
||||||
|
"""
|
||||||
|
Embed an object list table retrieved using HTMX. Any extra keyword arguments are passed as URL query parameters.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
context: The current request context
|
||||||
|
viewname: The name of the view to use for the HTMX request (e.g. `dcim:site_list`)
|
||||||
|
return_url: The URL to pass as the `return_url`. If not provided, the current request's path will be used.
|
||||||
|
"""
|
||||||
|
url_params = QueryDict(mutable=True)
|
||||||
|
url_params.update(kwargs)
|
||||||
|
url_params['return_url'] = return_url or context['request'].path
|
||||||
|
return {
|
||||||
|
'viewname': viewname,
|
||||||
|
'url_params': url_params,
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user