Skip to content

Commit

Permalink
moves non-racked devices to tab #11803
Browse files Browse the repository at this point in the history
  • Loading branch information
abhi1693 authored and jeremystretch committed Jul 28, 2023
1 parent c89193d commit 7158360
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 9 deletions.
28 changes: 20 additions & 8 deletions netbox/dcim/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -681,13 +681,6 @@ def get_extra_context(self, request, instance):
(PowerFeed.objects.restrict(request.user).filter(rack=instance), 'rack_id'),
)

# Get 0U devices located within the rack
nonracked_devices = Device.objects.filter(
rack=instance,
position__isnull=True,
parent_bay__isnull=True
).prefetch_related('device_type__manufacturer', 'parent_bay', 'device_role')

peer_racks = Rack.objects.restrict(request.user, 'view').filter(site=instance.site)

if instance.location:
Expand All @@ -704,7 +697,6 @@ def get_extra_context(self, request, instance):

return {
'related_models': related_models,
'nonracked_devices': nonracked_devices,
'next_rack': next_rack,
'prev_rack': prev_rack,
'svg_extra': svg_extra,
Expand All @@ -731,6 +723,26 @@ def get_children(self, request, parent):
return parent.reservations.restrict(request.user, 'view')


@register_model_view(Rack, 'nonracked_devices', 'nonracked-devices')
class RackNonRackedView(generic.ObjectChildrenView):
queryset = Rack.objects.all()
child_model = Device
table = tables.DeviceTable
filterset = filtersets.DeviceFilterSet
template_name = 'dcim/rack/non_racked_devices.html'
tab = ViewTab(
label=_('Non-Racked Devices'),
badge=lambda obj: obj.devices.filter(rack=obj, position__isnull=True, parent_bay__isnull=True).count(),
weight=500,
permission='dcim.view_device',
)

def get_children(self, request, parent):
return parent.devices.restrict(request.user, 'view').filter(
rack=parent, position__isnull=True, parent_bay__isnull=True
)


@register_model_view(Rack, 'edit')
class RackEditView(generic.ObjectEditView):
queryset = Rack.objects.all()
Expand Down
1 change: 0 additions & 1 deletion netbox/templates/dcim/rack.html
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,6 @@ <h4>Rear</h4>
</div>
</div>
{% include 'inc/panels/related_objects.html' %}
{% include 'dcim/inc/nonracked_devices.html' %}
{% plugin_right_page object %}
</div>
</div>
Expand Down
51 changes: 51 additions & 0 deletions netbox/templates/dcim/rack/non_racked_devices.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{% extends 'dcim/rack/base.html' %}
{% load helpers %}

{% block extra_controls %}
{% if perms.dcim.add_device %}
<div class="bulk-button-group">
<a href="{% url 'dcim:device_add' %}?rack={{ object.pk }}&site={{ object.site.pk }}&return_url={% url 'dcim:rack_nonracked_devices' pk=object.pk %}"
class="btn btn-primary btn-sm">
<i class="mdi mdi-plus-thick" aria-hidden="true"></i> Add non-racked device
</a>
</div>
{% endif %}
{% endblock %}

{% block content %}
{% include 'inc/table_controls_htmx.html' with table_modal="DeviceTable_config" %}

<form method="post">
{% csrf_token %}

<div class="card">
<div class="card-body htmx-container table-responsive" id="object_list">
{% include 'htmx/table.html' %}
</div>
</div>

<div class="noprint bulk-buttons">
<div class="bulk-button-group">
{% if 'bulk_edit' in actions %}
<button type="submit" name="_edit"
formaction="{% url 'dcim:device_bulk_edit' %}?return_url={% url 'dcim:rack_nonracked_devices' pk=object.pk %}"
class="btn btn-warning btn-sm">
<i class="mdi mdi-pencil" aria-hidden="true"></i> Edit
</button>
{% endif %}
{% if 'bulk_delete' in actions %}
<button type="submit"
formaction="{% url 'dcim:device_bulk_delete' %}?return_url={% url 'dcim:rack_nonracked_devices' pk=object.pk %}"
class="btn btn-danger btn-sm">
<i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete
</button>
{% endif %}
</div>
</div>
</form>
{% endblock content %}

{% block modals %}
{{ block.super }}
{% table_config_form table %}
{% endblock modals %}

0 comments on commit 7158360

Please sign in to comment.