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.name|truncatechars:"25" }} -

{{ rack.facility_id|truncatechars:"30" }}

+

{{ rack.group|truncatechars:"30" }}

{% 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 %} @@ -25,7 +25,7 @@
{{ rack.name|truncatechars:"25" }} -

{{ rack.facility_id|truncatechars:"30" }}

+

{{ rack.group|truncatechars:"30" }}

{% endfor %} diff --git a/netbox/templates/dcim/rack_elevation_print.html b/netbox/templates/dcim/rack_elevation_print.html new file mode 100644 index 000000000..a6ca0590d --- /dev/null +++ b/netbox/templates/dcim/rack_elevation_print.html @@ -0,0 +1,39 @@ +{% extends '_base.html' %} +{% load helpers %} + +{% block content %} + {% if page %} +
+ {% for rack in page %} +
+
+ {{ rack.name|truncatechars:"25" }} +

{{ rack.group|truncatechars:"30" }}

+
+ {% 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 %} +
+
+ {{ rack.name|truncatechars:"25" }} +

{{ rack.group|truncatechars:"30" }}

+
+
+ {% endfor %} +
+
+ {% include 'inc/paginator.html' %} + + + {% else %} +
+

No racks found

+
+ {% endif %} +{% endblock %} + +{% block javascript %} + +{% endblock %} diff --git a/netbox/templates/inc/nav_menu.html b/netbox/templates/inc/nav_menu.html index a85647993..2337138b8 100644 --- a/netbox/templates/inc/nav_menu.html +++ b/netbox/templates/inc/nav_menu.html @@ -97,6 +97,11 @@ Rack Roles
  • + {% if perms.dcim.add_rackrole %} +
    + +
    + {% endif %} Elevations