1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Added templates for IPAM objects; cleaned up admin

This commit is contained in:
Jeremy Stretch
2016-08-15 16:58:25 -04:00
parent 6cdb62b67e
commit c60c4ad0df
8 changed files with 119 additions and 3 deletions

View File

@ -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()])

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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