Fixes #14945: Fix "select all" button for device type components (#15027)

This commit is contained in:
Jeremy Stretch 2024-02-05 13:05:25 -05:00 committed by GitHub
parent 8a77ec70f2
commit 93edf74f7c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 38 additions and 42 deletions

View File

@ -58,7 +58,11 @@ class DeviceComponentsView(generic.ObjectChildrenView):
return self.child_model.objects.restrict(request.user, 'view').filter(device=parent) return self.child_model.objects.restrict(request.user, 'view').filter(device=parent)
class DeviceTypeComponentsView(DeviceComponentsView): class DeviceTypeComponentsView(generic.ObjectChildrenView):
actions = {
**DEFAULT_ACTION_PERMISSIONS,
'bulk_rename': {'change'},
}
queryset = DeviceType.objects.all() queryset = DeviceType.objects.all()
template_name = 'dcim/devicetype/component_templates.html' template_name = 'dcim/devicetype/component_templates.html'
viewname = None # Used for return_url resolution viewname = None # Used for return_url resolution

View File

@ -1,45 +1,37 @@
{% extends 'dcim/devicetype/base.html' %} {% extends 'generic/object_children.html' %}
{% load render_table from django_tables2 %}
{% load helpers %} {% load helpers %}
{% load i18n %} {% load i18n %}
{% load perms %}
{% block content %} {% block bulk_edit_controls %}
{% if perms.dcim.change_devicetype %} {% with bulk_edit_view=child_model|validated_viewname:"bulk_edit" %}
<form method="post"> {% if 'bulk_edit' in actions and bulk_edit_view %}
{% csrf_token %} <button type="submit" name="_edit"
<div class="card"> formaction="{% url bulk_edit_view %}?device={{ object.pk }}&return_url={{ return_url }}"
<h5 class="card-header">{{ title }}</h5> class="btn btn-warning btn-sm">
<div class="card-body htmx-container table-responsive" id="object_list"> <i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
{% include 'htmx/table.html' %} </button>
</div> {% endif %}
<div class="card-footer noprint"> {% endwith %}
{% if table.rows %} {% with bulk_rename_view=child_model|validated_viewname:"bulk_rename" %}
<button type="submit" name="_edit" formaction="{% url table.Meta.model|viewname:"bulk_rename" %}?return_url={{ return_url }}" class="btn btn-sm btn-warning"> {% if 'bulk_rename' in actions and bulk_rename_view %}
<span class="mdi mdi-pencil-outline" aria-hidden="true"></span> {% trans "Rename" %} <button type="submit" name="_rename"
</button> formaction="{% url bulk_rename_view %}?return_url={{ return_url }}"
<button type="submit" name="_edit" formaction="{% url table.Meta.model|viewname:"bulk_edit" %}?return_url={{ return_url }}" class="btn btn-sm btn-warning"> class="btn btn-outline-warning btn-sm">
<span class="mdi mdi-pencil" aria-hidden="true"></span> {% trans "Edit" %} <i class="mdi mdi-pencil-outline" aria-hidden="true"></i> Rename
</button> </button>
<button type="submit" name="_delete" formaction="{% url table.Meta.model|viewname:"bulk_delete" %}?return_url={{ return_url }}" class="btn btn-sm btn-danger"> {% endif %}
<i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> {% trans "Delete" %} {% endwith %}
</button> {% endblock bulk_edit_controls %}
{% endif %}
<div class="float-end"> {% block bulk_extra_controls %}
<a href="{% url table.Meta.model|viewname:"add" %}?device_type={{ object.pk }}&return_url={{ return_url }}" class="btn btn-primary btn-sm"> {{ block.super }}
<i class="mdi mdi-plus-thick" aria-hidden="true"></i> {% if request.user|can_add:child_model %}
{% trans "Add" %} {{ title }} <div class="bulk-button-group">
</a> <a href="{% url table.Meta.model|viewname:"add" %}?device_type={{ object.pk }}&return_url={{ return_url }}" class="btn btn-primary btn-sm">
</div> <i class="mdi mdi-plus-thick" aria-hidden="true"></i>
<div class="clearfix"></div> {% trans "Add" %} {{ title }}
</div> </a>
</div> </div>
</form> {% endif %}
{% else %} {% endblock bulk_extra_controls %}
<div class="card">
<h5 class="card-header">{{ title }}</h5>
<div class="card-body htmx-container table-responsive" id="object_list">
{% include 'htmx/table.html' %}
</div>
</div>
{% endif %}
{% endblock content %}