Skip to content

Commit 09ea656

Browse files
committed
Fixes #14945: Fix "select all" button for device type components
1 parent 9f25289 commit 09ea656

File tree

2 files changed

+38
-42
lines changed

2 files changed

+38
-42
lines changed

netbox/dcim/views.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,11 @@ def get_children(self, request, parent):
5858
return self.child_model.objects.restrict(request.user, 'view').filter(device=parent)
5959

6060

61-
class DeviceTypeComponentsView(DeviceComponentsView):
61+
class DeviceTypeComponentsView(generic.ObjectChildrenView):
62+
actions = {
63+
**DEFAULT_ACTION_PERMISSIONS,
64+
'bulk_rename': {'change'},
65+
}
6266
queryset = DeviceType.objects.all()
6367
template_name = 'dcim/devicetype/component_templates.html'
6468
viewname = None # Used for return_url resolution
Lines changed: 33 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,37 @@
1-
{% extends 'dcim/devicetype/base.html' %}
2-
{% load render_table from django_tables2 %}
1+
{% extends 'generic/object_children.html' %}
32
{% load helpers %}
43
{% load i18n %}
4+
{% load perms %}
55

6-
{% block content %}
7-
{% if perms.dcim.change_devicetype %}
8-
<form method="post">
9-
{% csrf_token %}
10-
<div class="card">
11-
<h5 class="card-header">{{ title }}</h5>
12-
<div class="card-body htmx-container table-responsive" id="object_list">
13-
{% include 'htmx/table.html' %}
14-
</div>
15-
<div class="card-footer noprint">
16-
{% if table.rows %}
17-
<button type="submit" name="_edit" formaction="{% url table.Meta.model|viewname:"bulk_rename" %}?return_url={{ return_url }}" class="btn btn-sm btn-warning">
18-
<span class="mdi mdi-pencil-outline" aria-hidden="true"></span> {% trans "Rename" %}
19-
</button>
20-
<button type="submit" name="_edit" formaction="{% url table.Meta.model|viewname:"bulk_edit" %}?return_url={{ return_url }}" class="btn btn-sm btn-warning">
21-
<span class="mdi mdi-pencil" aria-hidden="true"></span> {% trans "Edit" %}
22-
</button>
23-
<button type="submit" name="_delete" formaction="{% url table.Meta.model|viewname:"bulk_delete" %}?return_url={{ return_url }}" class="btn btn-sm btn-danger">
24-
<i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> {% trans "Delete" %}
25-
</button>
26-
{% endif %}
27-
<div class="float-end">
28-
<a href="{% url table.Meta.model|viewname:"add" %}?device_type={{ object.pk }}&return_url={{ return_url }}" class="btn btn-primary btn-sm">
29-
<i class="mdi mdi-plus-thick" aria-hidden="true"></i>
30-
{% trans "Add" %} {{ title }}
31-
</a>
32-
</div>
33-
<div class="clearfix"></div>
34-
</div>
6+
{% block bulk_edit_controls %}
7+
{% with bulk_edit_view=child_model|validated_viewname:"bulk_edit" %}
8+
{% if 'bulk_edit' in actions and bulk_edit_view %}
9+
<button type="submit" name="_edit"
10+
formaction="{% url bulk_edit_view %}?device={{ object.pk }}&return_url={{ return_url }}"
11+
class="btn btn-warning btn-sm">
12+
<i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
13+
</button>
14+
{% endif %}
15+
{% endwith %}
16+
{% with bulk_rename_view=child_model|validated_viewname:"bulk_rename" %}
17+
{% if 'bulk_rename' in actions and bulk_rename_view %}
18+
<button type="submit" name="_rename"
19+
formaction="{% url bulk_rename_view %}?return_url={{ return_url }}"
20+
class="btn btn-outline-warning btn-sm">
21+
<i class="mdi mdi-pencil-outline" aria-hidden="true"></i> Rename
22+
</button>
23+
{% endif %}
24+
{% endwith %}
25+
{% endblock bulk_edit_controls %}
26+
27+
{% block bulk_extra_controls %}
28+
{{ block.super }}
29+
{% if request.user|can_add:child_model %}
30+
<div class="bulk-button-group">
31+
<a href="{% url table.Meta.model|viewname:"add" %}?device_type={{ object.pk }}&return_url={{ return_url }}" class="btn btn-primary btn-sm">
32+
<i class="mdi mdi-plus-thick" aria-hidden="true"></i>
33+
{% trans "Add" %} {{ title }}
34+
</a>
3535
</div>
36-
</form>
37-
{% else %}
38-
<div class="card">
39-
<h5 class="card-header">{{ title }}</h5>
40-
<div class="card-body htmx-container table-responsive" id="object_list">
41-
{% include 'htmx/table.html' %}
42-
</div>
43-
</div>
44-
{% endif %}
45-
{% endblock content %}
36+
{% endif %}
37+
{% endblock bulk_extra_controls %}

0 commit comments

Comments
 (0)