diff --git a/netbox/dcim/urls.py b/netbox/dcim/urls.py index 5682bd8e7..71ffe16e6 100644 --- a/netbox/dcim/urls.py +++ b/netbox/dcim/urls.py @@ -52,6 +52,7 @@ urlpatterns = [ # Racks 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-print/$', views.RackElevationPrintView.as_view(), name='rack_elevation_print'), 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/edit/$', views.RackBulkEditView.as_view(), name='rack_bulk_edit'), diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 6e7aa070c..3c831f8c3 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -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): def get(self, request, pk): diff --git a/netbox/templates/dcim/inc/rack_elevation.html b/netbox/templates/dcim/inc/rack_elevation.html index e6b721db4..3dbaf6e00 100644 --- a/netbox/templates/dcim/inc/rack_elevation.html +++ b/netbox/templates/dcim/inc/rack_elevation.html @@ -27,13 +27,13 @@ {% ifequal u.device.face face_id %} - {{ u.device.name|default:u.device.device_role }} + {{ u.device.device_type.full_name }} [{{ u.device.name }}] {% if u.device.devicebay_count %} ({{ u.device.get_children.count }}/{{ u.device.devicebay_count }}) {% endif %} {% else %} - {{ u.device.name|default:u.device.device_role }} + {{ u.device.device_type.full_name }} [{{ u.device.name }}] {% endifequal %} {% else %} diff --git a/netbox/templates/dcim/rack_elevation_list.html b/netbox/templates/dcim/rack_elevation_list.html index 38a821750..1bbbb0b88 100644 --- a/netbox/templates/dcim/rack_elevation_list.html +++ b/netbox/templates/dcim/rack_elevation_list.html @@ -15,7 +15,7 @@
{{ rack.facility_id|truncatechars:"30" }}
+{{ rack.group|truncatechars:"30" }}
{{ rack.facility_id|truncatechars:"30" }}
+{{ rack.group|truncatechars:"30" }}
{{ rack.group|truncatechars:"30" }}
+{{ rack.group|truncatechars:"30" }}
+No racks found
+