Parcourir la source

Implemented built-in CSV export for circuit objects

Jeremy Stretch il y a 8 ans
Parent
commit
4895ae13a7

+ 22 - 0
netbox/circuits/models.py

@@ -44,6 +44,15 @@ class Provider(models.Model):
     def get_absolute_url(self):
         return reverse('circuits:provider', args=[self.slug])
 
+    def to_csv(self):
+        return ','.join([
+            self.name,
+            self.slug,
+            str(self.asn) if self.asn else '',
+            self.account,
+            self.portal_url,
+        ])
+
 
 class CircuitType(models.Model):
     """
@@ -87,3 +96,16 @@ class Circuit(models.Model):
 
     def get_absolute_url(self):
         return reverse('circuits:circuit', args=[self.pk])
+
+    def to_csv(self):
+        return ','.join([
+            self.cid,
+            self.provider.name,
+            self.type.name,
+            self.site.name,
+            self.install_date.isoformat() if self.install_date else '',
+            str(self.port_speed),
+            str(self.commit_rate) if self.commit_rate else '',
+            self.xconnect_id,
+            self.pp_info,
+        ])

+ 1 - 13
netbox/templates/circuits/circuit_list.html

@@ -11,19 +11,7 @@
 			Add a circuit
 		</a>
     {% endif %}
-    {% if export_templates %}
-        <div class="btn-group">
-            <button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
-                <span class="glyphicon glyphicon-export" aria-hidden="true"></span>
-                Export circuits <span class="caret"></span>
-            </button>
-            <ul class="dropdown-menu">
-                {% for et in export_templates %}
-                    <li><a href="{% url 'circuits:circuit_list' %}{% if request.GET %}?{{ request.GET.urlencode }}&{% else %}?{% endif %}export={{ et.name }}">{{ et.name }}</a></li>
-                {% endfor %}
-            </ul>
-        </div>
-    {% endif %}
+    {% include 'inc/export_button.html' with obj_type='circuits' %}
 </div>
 <h1>Circuits</h1>
 <div class="row">

+ 1 - 13
netbox/templates/circuits/provider_list.html

@@ -10,19 +10,7 @@
 			Add a provider
 		</a>
     {% endif %}
-    {% if export_templates %}
-        <div class="btn-group">
-            <button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
-                <span class="glyphicon glyphicon-export" aria-hidden="true"></span>
-                Export providers <span class="caret"></span>
-            </button>
-            <ul class="dropdown-menu">
-                {% for et in export_templates %}
-                    <li><a href="{% url 'circuits:provider_list' %}{% if request.GET %}?{{ request.GET.urlencode }}&{% else %}?{% endif %}export={{ et.name }}">{{ et.name }}</a></li>
-                {% endfor %}
-            </ul>
-        </div>
-    {% endif %}
+    {% include 'inc/export_button.html' with obj_type='providers' %}
 </div>
 <h1>Providers</h1>
 <div class="row">