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

Converted IPAM VRF, Aggregate add/edit/delete views to CBVs

This commit is contained in:
Jeremy Stretch
2016-05-09 12:20:46 -04:00
parent 606255e1ab
commit 60daaee204
6 changed files with 62 additions and 157 deletions

View File

@ -4,22 +4,22 @@ from . import views
urlpatterns = [
url(r'^vrfs/$', views.VRFListView.as_view(), name='vrf_list'),
url(r'^vrfs/add/$', views.vrf_add, name='vrf_add'),
url(r'^vrfs/add/$', views.VRFAddView.as_view(), name='vrf_add'),
url(r'^vrfs/import/$', views.VRFBulkImportView.as_view(), name='vrf_import'),
url(r'^vrfs/edit/$', views.VRFBulkEditView.as_view(), name='vrf_bulk_edit'),
url(r'^vrfs/delete/$', views.VRFBulkDeleteView.as_view(), name='vrf_bulk_delete'),
url(r'^vrfs/(?P<pk>\d+)/$', views.vrf, name='vrf'),
url(r'^vrfs/(?P<pk>\d+)/edit/$', views.vrf_edit, name='vrf_edit'),
url(r'^vrfs/(?P<pk>\d+)/delete/$', views.vrf_delete, name='vrf_delete'),
url(r'^vrfs/(?P<pk>\d+)/edit/$', views.VRFEditView.as_view(), name='vrf_edit'),
url(r'^vrfs/(?P<pk>\d+)/delete/$', views.VRFDeleteView.as_view(), name='vrf_delete'),
url(r'^aggregates/$', views.AggregateListView.as_view(), name='aggregate_list'),
url(r'^aggregates/add/$', views.aggregate_add, name='aggregate_add'),
url(r'^aggregates/add/$', views.AggregateAddView.as_view(), name='aggregate_add'),
url(r'^aggregates/import/$', views.AggregateBulkImportView.as_view(), name='aggregate_import'),
url(r'^aggregates/edit/$', views.AggregateBulkEditView.as_view(), name='aggregate_bulk_edit'),
url(r'^aggregates/delete/$', views.AggregateBulkDeleteView.as_view(), name='aggregate_bulk_delete'),
url(r'^aggregates/(?P<pk>\d+)/$', views.aggregate, name='aggregate'),
url(r'^aggregates/(?P<pk>\d+)/edit/$', views.aggregate_edit, name='aggregate_edit'),
url(r'^aggregates/(?P<pk>\d+)/delete/$', views.aggregate_delete, name='aggregate_delete'),
url(r'^aggregates/(?P<pk>\d+)/edit/$', views.AggregateEditView.as_view(), name='aggregate_edit'),
url(r'^aggregates/(?P<pk>\d+)/delete/$', views.AggregateDeleteView.as_view(), name='aggregate_delete'),
url(r'^prefixes/$', views.PrefixListView.as_view(), name='prefix_list'),
url(r'^prefixes/add/$', views.prefix_add, name='prefix_add'),

View File

@ -15,17 +15,18 @@ from dcim.models import Device
from utilities.error_handlers import handle_protectederror
from utilities.forms import ConfirmationForm
from utilities.paginator import EnhancedPaginator
from utilities.views import BulkImportView, BulkEditView, BulkDeleteView, ObjectListView
from utilities.views import BulkImportView, BulkEditView, BulkDeleteView, ObjectListView, ObjectAddView,\
ObjectEditView, ObjectDeleteView
from .filters import AggregateFilter, PrefixFilter, IPAddressFilter, VLANFilter, VRFFilter
from .forms import AggregateForm, AggregateImportForm, AggregateBulkEditForm, AggregateBulkDeleteForm, \
AggregateFilterForm, PrefixForm, PrefixImportForm, PrefixBulkEditForm, PrefixBulkDeleteForm, PrefixFilterForm, \
IPAddressForm, IPAddressImportForm, IPAddressBulkEditForm, IPAddressBulkDeleteForm, IPAddressFilterForm, VLANForm, \
VLANImportForm, VLANBulkEditForm, VLANBulkDeleteForm, VRFForm, VRFImportForm, VRFBulkEditForm, VRFBulkDeleteForm, \
from .forms import AggregateForm, AggregateImportForm, AggregateBulkEditForm, AggregateBulkDeleteForm,\
AggregateFilterForm, PrefixForm, PrefixImportForm, PrefixBulkEditForm, PrefixBulkDeleteForm, PrefixFilterForm,\
IPAddressForm, IPAddressImportForm, IPAddressBulkEditForm, IPAddressBulkDeleteForm, IPAddressFilterForm, VLANForm,\
VLANImportForm, VLANBulkEditForm, VLANBulkDeleteForm, VRFForm, VRFImportForm, VRFBulkEditForm, VRFBulkDeleteForm,\
VLANFilterForm
from .models import VRF, Aggregate, Prefix, VLAN
from .tables import AggregateTable, AggregateBulkEditTable, PrefixTable, PrefixBriefTable, PrefixBulkEditTable, \
IPAddress, IPAddressBriefTable, IPAddressTable, IPAddressBulkEditTable, VLANTable, VLANBulkEditTable, VRFTable, \
from .tables import AggregateTable, AggregateBulkEditTable, PrefixTable, PrefixBriefTable, PrefixBulkEditTable,\
IPAddress, IPAddressBriefTable, IPAddressTable, IPAddressBulkEditTable, VLANTable, VLANBulkEditTable, VRFTable,\
VRFBulkEditTable
@ -69,74 +70,26 @@ def vrf(request, pk):
})
@permission_required('ipam.add_vrf')
def vrf_add(request):
if request.method == 'POST':
form = VRFForm(request.POST)
if form.is_valid():
vrf = form.save()
messages.success(request, "Added new VRF: {0}".format(vrf))
if '_addanother' in request.POST:
return redirect('ipam:vrf_add')
else:
return redirect('ipam:vrf', pk=vrf.pk)
else:
form = VRFForm()
return render(request, 'ipam/vrf_edit.html', {
'form': form,
'cancel_url': reverse('ipam:vrf_list'),
})
class VRFAddView(PermissionRequiredMixin, ObjectAddView):
permission_required = 'ipam.add_vrf'
model = VRF
form_class = VRFForm
template_name = 'ipam/vrf_edit.html'
cancel_url = 'ipam:vrf_list'
@permission_required('ipam.change_vrf')
def vrf_edit(request, pk):
vrf = get_object_or_404(VRF, pk=pk)
if request.method == 'POST':
form = VRFForm(request.POST, instance=vrf)
if form.is_valid():
vrf = form.save()
messages.success(request, "Modified VRF {0}".format(vrf))
return redirect('ipam:vrf', pk=vrf.pk)
else:
form = VRFForm(instance=vrf)
return render(request, 'ipam/vrf_edit.html', {
'vrf': vrf,
'form': form,
'cancel_url': reverse('ipam:vrf', kwargs={'pk': vrf.pk}),
})
class VRFEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'ipam.change_vrf'
model = VRF
form_class = VRFForm
template_name = 'ipam/vrf_edit.html'
@permission_required('ipam.delete_vrf')
def vrf_delete(request, pk):
vrf = get_object_or_404(VRF, pk=pk)
if request.method == 'POST':
form = ConfirmationForm(request.POST)
if form.is_valid():
try:
vrf.delete()
messages.success(request, "VRF {0} has been deleted".format(vrf))
return redirect('ipam:vrf_list')
except ProtectedError, e:
handle_protectederror(vrf, request, e)
return redirect('ipam:vrf', pk=vrf.pk)
else:
form = ConfirmationForm()
return render(request, 'ipam/vrf_delete.html', {
'vrf': vrf,
'form': form,
'cancel_url': reverse('ipam:vrf', kwargs={'pk': vrf.pk})
})
class VRFDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'ipam.delete_vrf'
model = VRF
template_name = 'ipam/vrf_delete.html'
redirect_url = 'ipam:vrf_list'
class VRFBulkImportView(PermissionRequiredMixin, BulkImportView):
@ -211,74 +164,26 @@ def aggregate(request, pk):
})
@permission_required('ipam.add_aggregate')
def aggregate_add(request):
if request.method == 'POST':
form = AggregateForm(request.POST)
if form.is_valid():
aggregate = form.save()
messages.success(request, "Added new aggregate: {0}".format(aggregate.prefix))
if '_addanother' in request.POST:
return redirect('ipam:aggregate_add')
else:
return redirect('ipam:aggregate', pk=aggregate.pk)
else:
form = AggregateForm()
return render(request, 'ipam/aggregate_edit.html', {
'form': form,
'cancel_url': reverse('ipam:aggregate_list'),
})
class AggregateAddView(PermissionRequiredMixin, ObjectAddView):
permission_required = 'ipam.add_aggregate'
model = Aggregate
form_class = AggregateForm
template_name = 'ipam/aggregate_edit.html'
cancel_url = 'ipam:aggregate_list'
@permission_required('ipam.change_aggregate')
def aggregate_edit(request, pk):
aggregate = get_object_or_404(Aggregate, pk=pk)
if request.method == 'POST':
form = AggregateForm(request.POST, instance=aggregate)
if form.is_valid():
aggregate = form.save()
messages.success(request, "Modified aggregate {0}".format(aggregate.prefix))
return redirect('ipam:aggregate', pk=aggregate.pk)
else:
form = AggregateForm(instance=aggregate)
return render(request, 'ipam/aggregate_edit.html', {
'aggregate': aggregate,
'form': form,
'cancel_url': reverse('ipam:aggregate', kwargs={'pk': aggregate.pk}),
})
class AggregateEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'ipam.change_aggregate'
model = Aggregate
form_class = AggregateForm
template_name = 'ipam/aggregate_edit.html'
@permission_required('ipam.delete_aggregate')
def aggregate_delete(request, pk):
aggregate = get_object_or_404(Aggregate, pk=pk)
if request.method == 'POST':
form = ConfirmationForm(request.POST)
if form.is_valid():
try:
aggregate.delete()
messages.success(request, "Aggregate {0} has been deleted".format(aggregate))
return redirect('ipam:aggregate_list')
except ProtectedError, e:
handle_protectederror(aggregate, request, e)
return redirect('ipam:aggregate', pk=aggregate.pk)
else:
form = ConfirmationForm()
return render(request, 'ipam/aggregate_delete.html', {
'aggregate': aggregate,
'form': form,
'cancel_url': reverse('ipam:aggregate', kwargs={'pk': aggregate.pk})
})
class AggregateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
permission_required = 'ipam.delete_aggregate'
model = Aggregate
template_name = 'ipam/aggregate_delete.html'
redirect_url = 'ipam:aggregate_list'
class AggregateBulkImportView(PermissionRequiredMixin, BulkImportView):

View File

@ -1,8 +1,8 @@
{% extends 'utilities/confirmation_form.html' %}
{% load form_helpers %}
{% block title %}Delete aggregate {{ aggregate }}?{% endblock %}
{% block title %}Delete aggregate {{ obj }}?{% endblock %}
{% block message %}
<p>Are you sure you want to delete this aggregate?</p>
<p>Are you sure you want to delete {{ obj }}?</p>
{% endblock %}

View File

@ -1,11 +1,11 @@
{% extends '_base.html' %}
{% load form_helpers %}
{% block title %}Editing aggregate {{ aggregate }}{% endblock %}
{% block title %}{% if obj %}Editing aggregate {{ obj }}{% else %}Add a new aggregate{% endif %}{% endblock %}
{% block content %}
{% if aggregate %}
<h1>{{ aggregate }}</h1>
{% if obj %}
<h1>{{ obj }}</h1>
{% else %}
<h1>Add an Aggregate</h1>
{% endif %}
@ -32,9 +32,9 @@
</div>
<div class="form-group">
<div class="col-md-9 col-md-offset-3">
{% if aggregate %}
{% if obj %}
<button type="submit" name="_update" class="btn btn-primary">Update</button>
<a href="{% url 'ipam:aggregate' pk=aggregate.pk %}" class="btn btn-default">Cancel</a>
<a href="{% url 'ipam:aggregate' pk=obj.pk %}" class="btn btn-default">Cancel</a>
{% else %}
<button type="submit" name="_create" class="btn btn-primary">Create</button>
<button type="submit" name="_addanother" class="btn btn-primary">Create and Add Another</button>

View File

@ -1,20 +1,20 @@
{% extends 'utilities/confirmation_form.html' %}
{% load form_helpers %}
{% block title %}Delete VRF {{ vrf }}?{% endblock %}
{% block title %}Delete VRF {{ obj }}?{% endblock %}
{% block message %}
<p>
Are you sure you want to delete this VRF?
{% if vrf.prefix_set.count %}
{% if obj.prefix_set.count %}
The following prefixes will also be deleted:
{% else %}
(There are no prefixes associated with this VRF.)
{% endif %}
</p>
{% if vrf.prefix_set.count %}
{% if obj.prefix_set.count %}
<ul>
{% for p in vrf.prefix_set.all %}
{% for p in obj.prefix_set.all %}
<li><a href="{% url 'ipam:prefix' pk=p.pk %}">{{ p }}</a></li>
{% endfor %}
</ul>

View File

@ -1,11 +1,11 @@
{% extends '_base.html' %}
{% load form_helpers %}
{% block title %}{% if vrf %}Editing VRF {{ vrf }}{% else %}Add a VRF{% endif %}{% endblock %}
{% block title %}{% if obj %}Editing VRF {{ obj }}{% else %}Add a VRF{% endif %}{% endblock %}
{% block content %}
{% if vrf %}
<h1>{{ vrf }}</h1>
{% if obj %}
<h1>{{ obj }}</h1>
{% else %}
<h1>Add a VRF</h1>
{% endif %}
@ -29,9 +29,9 @@
</div>
<div class="form-group">
<div class="col-md-9 col-md-offset-3">
{% if vrf %}
{% if obj %}
<button type="submit" name="_update" class="btn btn-primary">Update</button>
<a href="{% url 'ipam:vrf' pk=vrf.pk %}" class="btn btn-default">Cancel</a>
<a href="{% url 'ipam:vrf' pk=obj.pk %}" class="btn btn-default">Cancel</a>
{% else %}
<button type="submit" name="_create" class="btn btn-primary">Create</button>
<button type="submit" name="_addanother" class="btn btn-primary">Create and Add Another</button>