Просмотр исходного кода

#6732: Show sites table under ASN view

jeremystretch 4 лет назад
Родитель
Сommit
c2f85a2877
2 измененных файлов с 67 добавлено и 63 удалено
  1. 5 2
      netbox/ipam/views.py
  2. 62 61
      netbox/templates/ipam/asn.html

+ 5 - 2
netbox/ipam/views.py

@@ -216,10 +216,13 @@ class ASNView(generic.ObjectView):
     queryset = ASN.objects.all()
 
     def get_extra_context(self, request, instance):
-        sites = instance.sites.restrict(request.user, 'view').all()
+        sites = instance.sites.restrict(request.user, 'view')
+        sites_table = SiteTable(sites)
+        paginate_table(sites_table, request)
 
         return {
-            'sites': sites,
+            'sites_table': sites_table,
+            'sites_count': sites.count()
         }
 
 

+ 62 - 61
netbox/templates/ipam/asn.html

@@ -6,72 +6,73 @@
 {% block breadcrumbs %}
   {{ block.super }}
   <li class="breadcrumb-item"><a href="{% url 'ipam:asn_list' %}?rir_id={{ object.rir.pk }}">{{ object.rir }}</a></li>
-{% endblock %}
+{% endblock breadcrumbs %}
 
 {% block content %}
-<div class="row">
-	<div class="col col-md-6">
-        <div class="card">
-            <h5 class="card-header">
-                ASN
-            </h5>
-            <div class="card-body">
-                <table class="table table-hover attr-table">
-                    <tr>
-                        <td>AS Number</td>
-                        <td>{{ object.asn }}</td>
-                    </tr>
-                    <tr>
-                        <td>RIR</td>
-                        <td>
-                            <a href="{% url 'ipam:asn_list' %}?rir={{ object.rir.slug }}">{{ object.rir }}</a>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td>Tenant</td>
-                        <td>
-                            {% if object.tenant %}
-                                {% if prefix.object.group %}
-                                    <a href="{{ object.tenant.group.get_absolute_url }}">{{ object.tenant.group }}</a> /
-                                {% endif %}
-                                <a href="{{ object.tenant.get_absolute_url }}">{{ object.tenant }}</a>
-                            {% else %}
-                                <span class="text-muted">None</span>
-                            {% endif %}
-                        </td>
-                    </tr>
-                    <tr>
-                        <td>Description</td>
-                        <td>{{ object.description|placeholder }}</td>
-                    </tr>
-                </table>
-            </div>
+  <div class="row">
+    <div class="col col-md-6">
+      <div class="card">
+        <h5 class="card-header">ASN</h5>
+        <div class="card-body">
+          <table class="table table-hover attr-table">
+            <tr>
+              <td>AS Number</td>
+              <td>{{ object.asn }}</td>
+            </tr>
+            <tr>
+              <td>RIR</td>
+              <td>
+                <a href="{% url 'ipam:asn_list' %}?rir={{ object.rir.slug }}">{{ object.rir }}</a>
+              </td>
+            </tr>
+            <tr>
+              <td>Tenant</td>
+              <td>
+                {% if object.tenant %}
+                  {% if prefix.object.group %}
+                    <a href="{{ object.tenant.group.get_absolute_url }}">{{ object.tenant.group }}</a> /
+                  {% endif %}
+                  <a href="{{ object.tenant.get_absolute_url }}">{{ object.tenant }}</a>
+                {% else %}
+                  <span class="text-muted">None</span>
+                {% endif %}
+              </td>
+            </tr>
+            <tr>
+              <td>Description</td>
+              <td>{{ object.description|placeholder }}</td>
+            </tr>
+            <tr>
+              <td>Sites</td>
+              <td>
+                {% if sites_count %}
+                  <a href="{% url 'dcim:site_list' %}?asn_id={{ object.pk }}">{{ sites_count }}</a>
+                {% else %}
+                  {{ sites_count }}
+                {% endif %}
+              </td>
+            </tr>
+          </table>
         </div>
-        {% include 'inc/panels/custom_fields.html' %}
-        {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:asn_list' %}
-        {% plugin_left_page object %}
+      </div>
+      {% plugin_left_page object %}
     </div>
     <div class="col col-md-6">
-        <div class="card">
-            <h5 class="card-header">
-                Sites
-            </h5>
-            <div class='card-body'>
-              {% if sites %}
-                {% for site in sites %}
-                    <a href="{{ site.get_absolute_url }}"><span class="badge bg-primary">{{ site }}</span></a>
-                {% endfor %}
-              {% else %}
-                <span class="text-muted">None</span>
-              {% endif %}
-            </div>
-        </div>
-        {% plugin_right_page object %}
+      {% include 'inc/panels/custom_fields.html' %}
+      {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:asn_list' %}
+      {% plugin_right_page object %}
     </div>
-</div>
-<div class="row mb-3">
+  </div>
+  <div class="row">
     <div class="col col-md-12">
-        {% plugin_full_width_page object %}
+      <div class="card">
+        <h5 class="card-header">Sites</h5>
+        <div class="card-body">
+          {% include 'inc/table.html' with table=sites_table %}
+        </div>
+      </div>
+      {% include 'inc/paginator.html' with paginator=sites_table.paginator page=sites_table.page %}
+      {% plugin_full_width_page object %}
     </div>
-</div>
-{% endblock %}
+  </div>
+{% endblock content %}