This commit is contained in:
Harsh Kotak 2018-06-08 23:54:59 +00:00 committed by GitHub
commit e39dd391ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 89 additions and 4 deletions

View File

@ -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'),

View File

@ -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):

View File

@ -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 %}

View File

@ -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 %}

View 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 %}

View File

@ -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>