Browse Source

Enabled export templates for clusters and virtual machines

Jeremy Stretch 7 years ago
parent
commit
e93129f1ae
2 changed files with 47 additions and 5 deletions
  1. 44 3
      netbox/extras/admin.py
  2. 3 2
      netbox/extras/constants.py

+ 44 - 3
netbox/extras/admin.py

@@ -7,6 +7,18 @@ from django.utils.safestring import mark_safe
 from .models import CustomField, CustomFieldChoice, Graph, ExportTemplate, TopologyMap, UserAction
 
 
+def order_content_types(field):
+    """
+    Order the list of available ContentTypes by application
+    """
+    queryset = field.queryset.order_by('app_label', 'model')
+    field.choices = [(ct.pk, '{} > {}'.format(ct.app_label, ct.name)) for ct in queryset]
+
+
+#
+# Custom fields
+#
+
 class CustomFieldForm(forms.ModelForm):
 
     class Meta:
@@ -16,9 +28,7 @@ class CustomFieldForm(forms.ModelForm):
     def __init__(self, *args, **kwargs):
         super(CustomFieldForm, self).__init__(*args, **kwargs)
 
-        # Organize the available ContentTypes
-        queryset = self.fields['obj_type'].queryset.order_by('app_label', 'model')
-        self.fields['obj_type'].choices = [(ct.pk, '{} > {}'.format(ct.app_label, ct.name)) for ct in queryset]
+        order_content_types(self.fields['obj_type'])
 
 
 class CustomFieldChoiceAdmin(admin.TabularInline):
@@ -36,15 +46,42 @@ class CustomFieldAdmin(admin.ModelAdmin):
         return ', '.join([ct.name for ct in obj.obj_type.all()])
 
 
+#
+# Graphs
+#
+
 @admin.register(Graph)
 class GraphAdmin(admin.ModelAdmin):
     list_display = ['name', 'type', 'weight', 'source']
 
 
+#
+# Export templates
+#
+
+class ExportTemplateForm(forms.ModelForm):
+
+    class Meta:
+        model = ExportTemplate
+        exclude = []
+
+    def __init__(self, *args, **kwargs):
+        super(ExportTemplateForm, self).__init__(*args, **kwargs)
+
+        # Format ContentType choices
+        order_content_types(self.fields['content_type'])
+        self.fields['content_type'].choices.insert(0, ('', '---------'))
+
+
 @admin.register(ExportTemplate)
 class ExportTemplateAdmin(admin.ModelAdmin):
     list_display = ['name', 'content_type', 'description', 'mime_type', 'file_extension']
+    form = ExportTemplateForm
+
 
+#
+# Topology maps
+#
 
 @admin.register(TopologyMap)
 class TopologyMapAdmin(admin.ModelAdmin):
@@ -54,6 +91,10 @@ class TopologyMapAdmin(admin.ModelAdmin):
     }
 
 
+#
+# User actions
+#
+
 @admin.register(UserAction)
 class UserActionAdmin(admin.ModelAdmin):
     actions = None

+ 3 - 2
netbox/extras/constants.py

@@ -38,10 +38,11 @@ GRAPH_TYPE_CHOICES = (
 
 # Models which support export templates
 EXPORTTEMPLATE_MODELS = [
+    'provider', 'circuit',                                                          # Circuits
     'site', 'rack', 'device', 'consoleport', 'powerport', 'interfaceconnection',    # DCIM
     'aggregate', 'prefix', 'ipaddress', 'vlan',                                     # IPAM
-    'provider', 'circuit',                                                          # Circuits
-    'tenant',                                                                       # Tenants
+    'tenant',                                                                       # Tenancy
+    'cluster', 'virtualmachine',                                                    # Virtualization
 ]
 
 # User action types