From 85776005c2f31f7b37986e2dc578a5b91885e48f Mon Sep 17 00:00:00 2001 From: harsh-kotak Date: Mon, 2 Apr 2018 14:36:12 -0600 Subject: [PATCH 1/3] Adding Rack Elevations print --- netbox/dcim/urls.py | 1 + netbox/templates/dcim/inc/rack_elevation.html | 4 +- .../templates/dcim/rack_elevation_list.html | 4 +- .../templates/dcim/rack_elevation_print.html | 39 +++++++++++++++++++ netbox/templates/inc/nav_menu.html | 5 +++ 5 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 netbox/templates/dcim/rack_elevation_print.html 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/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
  • From 8759cc2e16f36f2ca2167b50ed3d48babb788c09 Mon Sep 17 00:00:00 2001 From: Harsh Kotak Date: Mon, 2 Apr 2018 14:46:31 -0600 Subject: [PATCH 2/3] All racks on one page --- netbox/dcim/views.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 924fe67fb..5d46442c2 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -370,6 +370,44 @@ class RackElevationListView(View): 'filter_form': forms.RackFilterForm(request.GET), }) +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): From 62d76a007757300677163ccff03616a554aaa4ba Mon Sep 17 00:00:00 2001 From: Harsh Kotak Date: Mon, 2 Apr 2018 15:18:56 -0600 Subject: [PATCH 3/3] fixed indentation for CI --- netbox/dcim/views.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 5d46442c2..c4e697f5b 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -370,6 +370,7 @@ class RackElevationListView(View): 'filter_form': forms.RackFilterForm(request.GET), }) + class RackElevationPrintView(View): """ Display a set of rack elevations side-by-side for Print. @@ -395,7 +396,7 @@ class RackElevationPrintView(View): except EmptyPage: page = paginator.page(paginator.num_pages) - # Determine rack face + # Determine rack face if request.GET.get('face') == '1': face_id = 1 else: @@ -409,6 +410,7 @@ class RackElevationPrintView(View): 'filter_form': forms.RackFilterForm(request.GET), }) + class RackView(View): def get(self, request, pk):