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:
@ -1,6 +1,21 @@
|
|||||||
|
from django import forms
|
||||||
from django.contrib import admin
|
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):
|
class CustomFieldChoiceAdmin(admin.TabularInline):
|
||||||
@ -11,6 +26,7 @@ class CustomFieldChoiceAdmin(admin.TabularInline):
|
|||||||
class CustomFieldAdmin(admin.ModelAdmin):
|
class CustomFieldAdmin(admin.ModelAdmin):
|
||||||
inlines = [CustomFieldChoiceAdmin]
|
inlines = [CustomFieldChoiceAdmin]
|
||||||
list_display = ['name', 'models', 'type', 'required', 'default', 'description']
|
list_display = ['name', 'models', 'type', 'required', 'default', 'description']
|
||||||
|
form = CustomFieldForm
|
||||||
|
|
||||||
def models(self, obj):
|
def models(self, obj):
|
||||||
return ', '.join([ct.name for ct in obj.obj_type.all()])
|
return ', '.join([ct.name for ct in obj.obj_type.all()])
|
||||||
|
@ -43,7 +43,7 @@ class CustomFieldForm(forms.ModelForm):
|
|||||||
field = forms.CharField(max_length=100, required=cf.required, initial=cf.default)
|
field = forms.CharField(max_length=100, required=cf.required, initial=cf.default)
|
||||||
|
|
||||||
field.model = cf
|
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
|
field.help_text = cf.description
|
||||||
self.fields[field_name] = field
|
self.fields[field_name] = field
|
||||||
self.custom_fields.append(field_name)
|
self.custom_fields.append(field_name)
|
||||||
|
@ -8,7 +8,6 @@ from django.template import Template, Context
|
|||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
|
|
||||||
# NOTE: Any model added here MUST have a GenericRelation defined for CustomField
|
|
||||||
CUSTOMFIELD_MODELS = (
|
CUSTOMFIELD_MODELS = (
|
||||||
'site', 'rack', 'device', # DCIM
|
'site', 'rack', 'device', # DCIM
|
||||||
'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf', # IPAM
|
'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf', # IPAM
|
||||||
|
@ -111,6 +111,7 @@ class VRFEditView(PermissionRequiredMixin, ObjectEditView):
|
|||||||
permission_required = 'ipam.change_vrf'
|
permission_required = 'ipam.change_vrf'
|
||||||
model = VRF
|
model = VRF
|
||||||
form_class = forms.VRFForm
|
form_class = forms.VRFForm
|
||||||
|
template_name = 'ipam/vrf_edit.html'
|
||||||
cancel_url = 'ipam:vrf_list'
|
cancel_url = 'ipam:vrf_list'
|
||||||
|
|
||||||
|
|
||||||
@ -235,6 +236,7 @@ class AggregateEditView(PermissionRequiredMixin, ObjectEditView):
|
|||||||
permission_required = 'ipam.change_aggregate'
|
permission_required = 'ipam.change_aggregate'
|
||||||
model = Aggregate
|
model = Aggregate
|
||||||
form_class = forms.AggregateForm
|
form_class = forms.AggregateForm
|
||||||
|
template_name = 'ipam/aggregate_edit.html'
|
||||||
cancel_url = 'ipam:aggregate_list'
|
cancel_url = 'ipam:aggregate_list'
|
||||||
|
|
||||||
|
|
||||||
@ -373,6 +375,7 @@ class PrefixEditView(PermissionRequiredMixin, ObjectEditView):
|
|||||||
permission_required = 'ipam.change_prefix'
|
permission_required = 'ipam.change_prefix'
|
||||||
model = Prefix
|
model = Prefix
|
||||||
form_class = forms.PrefixForm
|
form_class = forms.PrefixForm
|
||||||
|
template_name = 'ipam/prefix_edit.html'
|
||||||
fields_initial = ['vrf', 'tenant', 'site', 'prefix', 'vlan']
|
fields_initial = ['vrf', 'tenant', 'site', 'prefix', 'vlan']
|
||||||
cancel_url = 'ipam:prefix_list'
|
cancel_url = 'ipam:prefix_list'
|
||||||
|
|
||||||
@ -601,6 +604,7 @@ class VLANEditView(PermissionRequiredMixin, ObjectEditView):
|
|||||||
permission_required = 'ipam.change_vlan'
|
permission_required = 'ipam.change_vlan'
|
||||||
model = VLAN
|
model = VLAN
|
||||||
form_class = forms.VLANForm
|
form_class = forms.VLANForm
|
||||||
|
template_name = 'ipam/vlan_edit.html'
|
||||||
cancel_url = 'ipam:vlan_list'
|
cancel_url = 'ipam:vlan_list'
|
||||||
|
|
||||||
|
|
||||||
|
22
netbox/templates/ipam/aggregate_edit.html
Normal file
22
netbox/templates/ipam/aggregate_edit.html
Normal 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 %}
|
26
netbox/templates/ipam/prefix_edit.html
Normal file
26
netbox/templates/ipam/prefix_edit.html
Normal 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 %}
|
26
netbox/templates/ipam/vlan_edit.html
Normal file
26
netbox/templates/ipam/vlan_edit.html
Normal 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 %}
|
23
netbox/templates/ipam/vrf_edit.html
Normal file
23
netbox/templates/ipam/vrf_edit.html
Normal 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 %}
|
Reference in New Issue
Block a user