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