From 9b1ec6f5f26a0ff31455a52052313b05b1e54072 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 2 Aug 2017 13:33:44 -0400 Subject: [PATCH] Closes #1368: Render reservations in rack elevations view --- netbox/dcim/models.py | 10 ++++++++++ netbox/dcim/views.py | 5 ----- netbox/templates/dcim/rack.html | 4 ++-- netbox/templates/dcim/rack_elevation_list.html | 4 ++-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index 8dd11e663..3719c7c25 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -357,6 +357,16 @@ class Rack(CreatedUpdatedModel, CustomFieldModel): return list(reversed(available_units)) + def get_reserved_units(self): + """ + Return a dictionary mapping all reserved units within the rack to their reservation. + """ + reserved_units = {} + for r in self.reservations.all(): + for u in r.units: + reserved_units[u] = r + return reserved_units + def get_0u_devices(self): return self.devices.filter(position=0) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index ea07138d5..78881c200 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -417,15 +417,10 @@ class RackView(View): prev_rack = Rack.objects.filter(site=rack.site, name__lt=rack.name).order_by('-name').first() reservations = RackReservation.objects.filter(rack=rack) - reserved_units = {} - for r in reservations: - for u in r.units: - reserved_units[u] = r return render(request, 'dcim/rack.html', { 'rack': rack, 'reservations': reservations, - 'reserved_units': reserved_units, 'nonracked_devices': nonracked_devices, 'next_rack': next_rack, 'prev_rack': prev_rack, diff --git a/netbox/templates/dcim/rack.html b/netbox/templates/dcim/rack.html index 6f117076b..2adb78e92 100644 --- a/netbox/templates/dcim/rack.html +++ b/netbox/templates/dcim/rack.html @@ -259,13 +259,13 @@

Front

- {% include 'dcim/inc/rack_elevation.html' with primary_face=front_elevation secondary_face=rear_elevation face_id=0 %} + {% include 'dcim/inc/rack_elevation.html' with primary_face=front_elevation secondary_face=rear_elevation face_id=0 reserved_units=rack.get_reserved_units %}

Rear

- {% include 'dcim/inc/rack_elevation.html' with primary_face=rear_elevation secondary_face=front_elevation face_id=1 %} + {% include 'dcim/inc/rack_elevation.html' with primary_face=rear_elevation secondary_face=front_elevation face_id=1 reserved_units=rack.get_reserved_units %}
diff --git a/netbox/templates/dcim/rack_elevation_list.html b/netbox/templates/dcim/rack_elevation_list.html index 9f6c4df83..5304538c1 100644 --- a/netbox/templates/dcim/rack_elevation_list.html +++ b/netbox/templates/dcim/rack_elevation_list.html @@ -18,9 +18,9 @@

{{ rack.facility_id|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 %} + {% 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 %} {% else %} - {% include 'dcim/inc/rack_elevation.html' with primary_face=rack.get_front_elevation secondary_face=rack.get_rear_elevation face_id=0 %} + {% include 'dcim/inc/rack_elevation.html' with primary_face=rack.get_front_elevation secondary_face=rack.get_rear_elevation face_id=0 reserved_units=rack.get_reserved_units %} {% endif %}