mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-09 00:58:16 -06:00
Merge 62d76a0077
into 8bad3aee74
This commit is contained in:
commit
e39dd391ed
@ -52,6 +52,7 @@ urlpatterns = [
|
|||||||
# Racks
|
# Racks
|
||||||
url(r'^racks/$', views.RackListView.as_view(), name='rack_list'),
|
url(r'^racks/$', views.RackListView.as_view(), name='rack_list'),
|
||||||
url(r'^rack-elevations/$', views.RackElevationListView.as_view(), name='rack_elevation_list'),
|
url(r'^rack-elevations/$', views.RackElevationListView.as_view(), name='rack_elevation_list'),
|
||||||
|
url(r'^rack-elevations-print/$', views.RackElevationPrintView.as_view(), name='rack_elevation_print'),
|
||||||
url(r'^racks/add/$', views.RackEditView.as_view(), name='rack_add'),
|
url(r'^racks/add/$', views.RackEditView.as_view(), name='rack_add'),
|
||||||
url(r'^racks/import/$', views.RackBulkImportView.as_view(), name='rack_import'),
|
url(r'^racks/import/$', views.RackBulkImportView.as_view(), name='rack_import'),
|
||||||
url(r'^racks/edit/$', views.RackBulkEditView.as_view(), name='rack_bulk_edit'),
|
url(r'^racks/edit/$', views.RackBulkEditView.as_view(), name='rack_bulk_edit'),
|
||||||
|
@ -372,6 +372,46 @@ class RackElevationListView(View):
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
class RackElevationPrintView(View):
|
||||||
|
"""
|
||||||
|
Display a set of rack elevations side-by-side for Print.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def get(self, request):
|
||||||
|
|
||||||
|
racks = Rack.objects.select_related(
|
||||||
|
'site', 'group', 'tenant', 'role'
|
||||||
|
).prefetch_related(
|
||||||
|
'devices__device_type'
|
||||||
|
)
|
||||||
|
racks = filters.RackFilter(request.GET, racks).qs
|
||||||
|
total_count = racks.count()
|
||||||
|
|
||||||
|
# Pagination
|
||||||
|
paginator = EnhancedPaginator(racks, total_count)
|
||||||
|
page_number = request.GET.get('page', 1)
|
||||||
|
try:
|
||||||
|
page = paginator.page(page_number)
|
||||||
|
except PageNotAnInteger:
|
||||||
|
page = paginator.page(1)
|
||||||
|
except EmptyPage:
|
||||||
|
page = paginator.page(paginator.num_pages)
|
||||||
|
|
||||||
|
# Determine rack face
|
||||||
|
if request.GET.get('face') == '1':
|
||||||
|
face_id = 1
|
||||||
|
else:
|
||||||
|
face_id = 0
|
||||||
|
|
||||||
|
return render(request, 'dcim/rack_elevation_print.html', {
|
||||||
|
'paginator': paginator,
|
||||||
|
'page': page,
|
||||||
|
'total_count': total_count,
|
||||||
|
'face_id': face_id,
|
||||||
|
'filter_form': forms.RackFilterForm(request.GET),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
class RackView(View):
|
class RackView(View):
|
||||||
|
|
||||||
def get(self, request, pk):
|
def get(self, request, pk):
|
||||||
|
@ -27,13 +27,13 @@
|
|||||||
{% ifequal u.device.face face_id %}
|
{% ifequal u.device.face face_id %}
|
||||||
<a href="{% url 'dcim:device' pk=u.device.pk %}" data-toggle="popover" data-trigger="hover" data-container="body" data-html="true"
|
<a href="{% url 'dcim:device' pk=u.device.pk %}" data-toggle="popover" data-trigger="hover" data-container="body" data-html="true"
|
||||||
data-content="{{ u.device.device_role }}<br />{{ u.device.device_type.full_name }} ({{ u.device.device_type.u_height }}U){% if u.device.asset_tag %}<br />{{ u.device.asset_tag }}{% endif %}">
|
data-content="{{ u.device.device_role }}<br />{{ u.device.device_type.full_name }} ({{ u.device.device_type.u_height }}U){% if u.device.asset_tag %}<br />{{ u.device.asset_tag }}{% endif %}">
|
||||||
{{ u.device.name|default:u.device.device_role }}
|
{{ u.device.device_type.full_name }} [{{ u.device.name }}]
|
||||||
{% if u.device.devicebay_count %}
|
{% if u.device.devicebay_count %}
|
||||||
({{ u.device.get_children.count }}/{{ u.device.devicebay_count }})
|
({{ u.device.get_children.count }}/{{ u.device.devicebay_count }})
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span>{{ u.device.name|default:u.device.device_role }}</span>
|
<span>{{ u.device.device_type.full_name }} [{{ u.device.name }}]</span>
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<div style="display: inline-block; width: 266px">
|
<div style="display: inline-block; width: 266px">
|
||||||
<div class="rack_header">
|
<div class="rack_header">
|
||||||
<strong><a href="{% url 'dcim:rack' pk=rack.pk %}">{{ rack.name|truncatechars:"25" }}</a></strong>
|
<strong><a href="{% url 'dcim:rack' pk=rack.pk %}">{{ rack.name|truncatechars:"25" }}</a></strong>
|
||||||
<p><small class="text-muted">{{ rack.facility_id|truncatechars:"30" }}</small></p>
|
<p><small class="text-muted">{{ rack.group|truncatechars:"30" }}</small></p>
|
||||||
</div>
|
</div>
|
||||||
{% if face_id %}
|
{% if face_id %}
|
||||||
{% include 'dcim/inc/rack_elevation.html' with primary_face=rack.get_rear_elevation secondary_face=rack.get_front_elevation face_id=1 reserved_units=rack.get_reserved_units %}
|
{% include 'dcim/inc/rack_elevation.html' with primary_face=rack.get_rear_elevation secondary_face=rack.get_front_elevation face_id=1 reserved_units=rack.get_reserved_units %}
|
||||||
@ -25,7 +25,7 @@
|
|||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
<div class="rack_header">
|
<div class="rack_header">
|
||||||
<strong><a href="{% url 'dcim:rack' pk=rack.pk %}">{{ rack.name|truncatechars:"25" }}</a></strong>
|
<strong><a href="{% url 'dcim:rack' pk=rack.pk %}">{{ rack.name|truncatechars:"25" }}</a></strong>
|
||||||
<p><small class="text-muted">{{ rack.facility_id|truncatechars:"30" }}</small></p>
|
<p><small class="text-muted">{{ rack.group|truncatechars:"30" }}</small></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
39
netbox/templates/dcim/rack_elevation_print.html
Normal file
39
netbox/templates/dcim/rack_elevation_print.html
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{% extends '_base.html' %}
|
||||||
|
{% load helpers %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% if page %}
|
||||||
|
<div style="white-space: wrap;">
|
||||||
|
{% for rack in page %}
|
||||||
|
<div style="display: inline-block; width: 266px">
|
||||||
|
<div class="rack_header">
|
||||||
|
<strong><a href="{% url 'dcim:rack' pk=rack.pk %}">{{ rack.name|truncatechars:"25" }}</a></strong>
|
||||||
|
<p><small class="text-muted">{{ rack.group|truncatechars:"30" }}</small></p>
|
||||||
|
</div>
|
||||||
|
{% include 'dcim/inc/rack_elevation.html' with primary_face=rack.get_front_elevation secondary_face=rack.get_rear_elevation reserved_units=rack.get_reserved_units %}
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
<div class="rack_header">
|
||||||
|
<strong><a href="{% url 'dcim:rack' pk=rack.pk %}">{{ rack.name|truncatechars:"25" }}</a></strong>
|
||||||
|
<p><small class="text-muted">{{ rack.group|truncatechars:"30" }}</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
{% include 'inc/paginator.html' %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
<div class="col-md-9">
|
||||||
|
<p>No racks found</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
{% block javascript %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function() {
|
||||||
|
$('[data-toggle="popover"]').popover()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
@ -97,6 +97,11 @@
|
|||||||
<a href="{% url 'dcim:rackrole_list' %}">Rack Roles</a>
|
<a href="{% url 'dcim:rackrole_list' %}">Rack Roles</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
{% if perms.dcim.add_rackrole %}
|
||||||
|
<div class="buttons pull-right">
|
||||||
|
<a href="{% url 'dcim:rack_elevation_print' %}" class="btn btn-xs btn-success" title="Export"><i class="fa fa-upload"></i></a>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<a href="{% url 'dcim:rack_elevation_list' %}">Elevations</a>
|
<a href="{% url 'dcim:rack_elevation_list' %}">Elevations</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
Loading…
Reference in New Issue
Block a user