Browse Source

Added templates for IPAM objects; cleaned up admin

Jeremy Stretch 8 years ago
parent
commit
c60c4ad0df

+ 17 - 1
netbox/extras/admin.py

@@ -1,6 +1,21 @@
+from django import forms
 from django.contrib import admin
 
-from .models import CustomField, CustomFieldValue, CustomFieldChoice, Graph, ExportTemplate, TopologyMap, UserAction
+from .models import CustomField, CustomFieldChoice, Graph, ExportTemplate, TopologyMap, UserAction
+
+
+class CustomFieldForm(forms.ModelForm):
+
+    class Meta:
+        model = CustomField
+        exclude = []
+
+    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]
 
 
 class CustomFieldChoiceAdmin(admin.TabularInline):
@@ -11,6 +26,7 @@ class CustomFieldChoiceAdmin(admin.TabularInline):
 class CustomFieldAdmin(admin.ModelAdmin):
     inlines = [CustomFieldChoiceAdmin]
     list_display = ['name', 'models', 'type', 'required', 'default', 'description']
+    form = CustomFieldForm
 
     def models(self, obj):
         return ', '.join([ct.name for ct in obj.obj_type.all()])

+ 1 - 1
netbox/extras/forms.py

@@ -43,7 +43,7 @@ class CustomFieldForm(forms.ModelForm):
                 field = forms.CharField(max_length=100, required=cf.required, initial=cf.default)
 
             field.model = cf
-            field.label = cf.label if cf.label else cf.name
+            field.label = cf.label if cf.label else cf.name.capitalize()
             field.help_text = cf.description
             self.fields[field_name] = field
             self.custom_fields.append(field_name)

+ 0 - 1
netbox/extras/models.py

@@ -8,7 +8,6 @@ from django.template import Template, Context
 from django.utils.safestring import mark_safe
 
 
-# NOTE: Any model added here MUST have a GenericRelation defined for CustomField
 CUSTOMFIELD_MODELS = (
     'site', 'rack', 'device',                               # DCIM
     'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf',      # IPAM

+ 4 - 0
netbox/ipam/views.py

@@ -111,6 +111,7 @@ class VRFEditView(PermissionRequiredMixin, ObjectEditView):
     permission_required = 'ipam.change_vrf'
     model = VRF
     form_class = forms.VRFForm
+    template_name = 'ipam/vrf_edit.html'
     cancel_url = 'ipam:vrf_list'
 
 
@@ -235,6 +236,7 @@ class AggregateEditView(PermissionRequiredMixin, ObjectEditView):
     permission_required = 'ipam.change_aggregate'
     model = Aggregate
     form_class = forms.AggregateForm
+    template_name = 'ipam/aggregate_edit.html'
     cancel_url = 'ipam:aggregate_list'
 
 
@@ -373,6 +375,7 @@ class PrefixEditView(PermissionRequiredMixin, ObjectEditView):
     permission_required = 'ipam.change_prefix'
     model = Prefix
     form_class = forms.PrefixForm
+    template_name = 'ipam/prefix_edit.html'
     fields_initial = ['vrf', 'tenant', 'site', 'prefix', 'vlan']
     cancel_url = 'ipam:prefix_list'
 
@@ -601,6 +604,7 @@ class VLANEditView(PermissionRequiredMixin, ObjectEditView):
     permission_required = 'ipam.change_vlan'
     model = VLAN
     form_class = forms.VLANForm
+    template_name = 'ipam/vlan_edit.html'
     cancel_url = 'ipam:vlan_list'
 
 

+ 22 - 0
netbox/templates/ipam/aggregate_edit.html

@@ -0,0 +1,22 @@
+{% extends 'utilities/obj_edit.html' %}
+{% load form_helpers %}
+
+{% block form %}
+    <div class="panel panel-default">
+        <div class="panel-heading"><strong>Aggregate</strong></div>
+        <div class="panel-body">
+            {% render_field form.prefix %}
+            {% render_field form.rir %}
+            {% render_field form.date_added %}
+            {% render_field form.description %}
+        </div>
+    </div>
+    {% if form.custom_fields %}
+        <div class="panel panel-default">
+            <div class="panel-heading"><strong>Custom Fields</strong></div>
+            <div class="panel-body">
+                {% render_custom_fields form %}
+            </div>
+        </div>
+    {% endif %}
+{% endblock %}

+ 26 - 0
netbox/templates/ipam/prefix_edit.html

@@ -0,0 +1,26 @@
+{% extends 'utilities/obj_edit.html' %}
+{% load form_helpers %}
+
+{% block form %}
+    <div class="panel panel-default">
+        <div class="panel-heading"><strong>Prefix</strong></div>
+        <div class="panel-body">
+            {% render_field form.prefix %}
+            {% render_field form.vrf %}
+            {% render_field form.tenant %}
+            {% render_field form.site %}
+            {% render_field form.vlan %}
+            {% render_field form.status %}
+            {% render_field form.role %}
+            {% render_field form.description %}
+        </div>
+    </div>
+    {% if form.custom_fields %}
+        <div class="panel panel-default">
+            <div class="panel-heading"><strong>Custom Fields</strong></div>
+            <div class="panel-body">
+                {% render_custom_fields form %}
+            </div>
+        </div>
+    {% endif %}
+{% endblock %}

+ 26 - 0
netbox/templates/ipam/vlan_edit.html

@@ -0,0 +1,26 @@
+{% extends 'utilities/obj_edit.html' %}
+{% load form_helpers %}
+
+{% block form %}
+    <div class="panel panel-default">
+        <div class="panel-heading"><strong>VLAN</strong></div>
+        <div class="panel-body">
+            {% render_field form.site %}
+            {% render_field form.group %}
+            {% render_field form.vid %}
+            {% render_field form.name %}
+            {% render_field form.tenant %}
+            {% render_field form.status %}
+            {% render_field form.role %}
+            {% render_field form.description %}
+        </div>
+    </div>
+    {% if form.custom_fields %}
+        <div class="panel panel-default">
+            <div class="panel-heading"><strong>Custom Fields</strong></div>
+            <div class="panel-body">
+                {% render_custom_fields form %}
+            </div>
+        </div>
+    {% endif %}
+{% endblock %}

+ 23 - 0
netbox/templates/ipam/vrf_edit.html

@@ -0,0 +1,23 @@
+{% extends 'utilities/obj_edit.html' %}
+{% load form_helpers %}
+
+{% block form %}
+    <div class="panel panel-default">
+        <div class="panel-heading"><strong>VRF</strong></div>
+        <div class="panel-body">
+            {% render_field form.name %}
+            {% render_field form.rd %}
+            {% render_field form.tenant %}
+            {% render_field form.enforce_unique %}
+            {% render_field form.description %}
+        </div>
+    </div>
+    {% if form.custom_fields %}
+        <div class="panel panel-default">
+            <div class="panel-heading"><strong>Custom Fields</strong></div>
+            <div class="panel-body">
+                {% render_custom_fields form %}
+            </div>
+        </div>
+    {% endif %}
+{% endblock %}