Enable HTMX for additional emebedded tables

This commit is contained in:
jeremystretch 2023-01-16 11:56:48 -05:00
parent 212356fc02
commit 757a27d90a
4 changed files with 40 additions and 56 deletions

View File

@ -3397,20 +3397,6 @@ class PowerPanelListView(generic.ObjectListView):
class PowerPanelView(generic.ObjectView): class PowerPanelView(generic.ObjectView):
queryset = PowerPanel.objects.all() queryset = PowerPanel.objects.all()
def get_extra_context(self, request, instance):
power_feeds = PowerFeed.objects.restrict(request.user).filter(power_panel=instance)
powerfeed_table = tables.PowerFeedTable(
data=power_feeds,
orderable=False
)
if request.user.has_perm('dcim.delete_cable'):
powerfeed_table.columns.show('pk')
powerfeed_table.exclude = ['power_panel']
return {
'powerfeed_table': powerfeed_table,
}
@register_model_view(PowerPanel, 'edit') @register_model_view(PowerPanel, 'edit')
class PowerPanelEditView(generic.ObjectEditView): class PowerPanelEditView(generic.ObjectEditView):

View File

@ -1200,10 +1200,6 @@ class L2VPNView(generic.ObjectView):
queryset = L2VPN.objects.all() queryset = L2VPN.objects.all()
def get_extra_context(self, request, instance): def get_extra_context(self, request, instance):
terminations = L2VPNTermination.objects.restrict(request.user, 'view').filter(l2vpn=instance)
terminations_table = tables.L2VPNTerminationTable(terminations, user=request.user, exclude=('l2vpn', ))
terminations_table.configure(request)
import_targets_table = tables.RouteTargetTable( import_targets_table = tables.RouteTargetTable(
instance.import_targets.prefetch_related('tenant'), instance.import_targets.prefetch_related('tenant'),
orderable=False orderable=False
@ -1214,7 +1210,6 @@ class L2VPNView(generic.ObjectView):
) )
return { return {
'terminations_table': terminations_table,
'import_targets_table': import_targets_table, 'import_targets_table': import_targets_table,
'export_targets_table': export_targets_table, 'export_targets_table': export_targets_table,
} }

View File

@ -45,40 +45,42 @@
</div> </div>
</div> </div>
<div class="row my-3"> <div class="row my-3">
<div class="col col-md-12"> <div class="col col-md-12">
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
<div class="card"> <div class="card">
<div class="card-body table-responsive"> <h5 class="card-header">Power Feeds</h5>
{% render_table powerfeed_table 'inc/table.html' %} <div class="card-body htmx-container table-responsive"
</div> hx-get="{% url 'dcim:powerfeed_list' %}?power_panel_id={{ object.pk }}"
<div class="card-footer noprint"> hx-trigger="load"
{% if perms.dcim.change_powerfeed %} ></div>
<button type="submit" name="_edit" formaction="{% url 'dcim:powerfeed_bulk_edit' %}?return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-warning btn-sm"> <div class="card-footer noprint">
<span class="mdi mdi-pencil" aria-hidden="true"></span> Edit {% if perms.dcim.change_powerfeed %}
</button> <button type="submit" name="_edit" formaction="{% url 'dcim:powerfeed_bulk_edit' %}?return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-warning btn-sm">
{% endif %} <span class="mdi mdi-pencil" aria-hidden="true"></span> Edit
{% if perms.dcim.delete_cable %} </button>
<button type="submit" name="_disconnect" formaction="{% url 'dcim:powerfeed_bulk_disconnect' %}?return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-outline-danger btn-sm"> {% endif %}
<span class="mdi mdi-ethernet-cable-off" aria-hidden="true"></span> Disconnect {% if perms.dcim.delete_cable %}
</button> <button type="submit" name="_disconnect" formaction="{% url 'dcim:powerfeed_bulk_disconnect' %}?return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-outline-danger btn-sm">
{% endif %} <span class="mdi mdi-ethernet-cable-off" aria-hidden="true"></span> Disconnect
{% if perms.dcim.delete_powerfeed %} </button>
<button type="submit" name="_delete" formaction="{% url 'dcim:powerfeed_bulk_delete' %}?return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-danger btn-sm"> {% endif %}
<span class="mdi mdi-trash-can-outline" aria-hidden="true"></span> Delete {% if perms.dcim.delete_powerfeed %}
</button> <button type="submit" name="_delete" formaction="{% url 'dcim:powerfeed_bulk_delete' %}?return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-danger btn-sm">
{% endif %} <span class="mdi mdi-trash-can-outline" aria-hidden="true"></span> Delete
{% if perms.dcim.add_powerfeed %} </button>
<div class="float-end"> {% endif %}
<a href="{% url 'dcim:powerfeed_add' %}?power_panel={{ object.pk }}&return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-primary btn-sm"> {% if perms.dcim.add_powerfeed %}
<span class="mdi mdi-plus-thick" aria-hidden="true"></span> Add Power Feeds <div class="float-end">
</a> <a href="{% url 'dcim:powerfeed_add' %}?power_panel={{ object.pk }}&return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-primary btn-sm">
</div> <span class="mdi mdi-plus-thick" aria-hidden="true"></span> Add Power Feeds
{% endif %} </a>
</div>
</div> </div>
</form> {% endif %}
{% plugin_full_width_page object %} </div>
</div> </div>
</form>
{% plugin_full_width_page object %}
</div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -55,9 +55,10 @@
<div class="col col-md-12"> <div class="col col-md-12">
<div class="card"> <div class="card">
<h5 class="card-header">Terminations</h5> <h5 class="card-header">Terminations</h5>
<div class="card-body"> <div class="card-body htmx-container table-responsive"
{% render_table terminations_table 'inc/table.html' %} hx-get="{% url 'ipam:l2vpntermination_list' %}?l2vpn_id={{ object.pk }}"
</div> hx-trigger="load"
></div>
{% if perms.ipam.add_l2vpntermination %} {% if perms.ipam.add_l2vpntermination %}
<div class="card-footer text-end noprint"> <div class="card-footer text-end noprint">
<a href="{% url 'ipam:l2vpntermination_add' %}?l2vpn={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-primary btn-sm{% if not object.can_add_termination %} disabled" aria-disabled="true{% endif %}"> <a href="{% url 'ipam:l2vpntermination_add' %}?l2vpn={{ object.pk }}&return_url={{ object.get_absolute_url }}" class="btn btn-primary btn-sm{% if not object.can_add_termination %} disabled" aria-disabled="true{% endif %}">