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

Converted circuits add/edit/delete views to CBVs

This commit is contained in:
Jeremy Stretch
2016-05-03 15:46:30 -04:00
parent 2945630fd3
commit 9acd23e08a
6 changed files with 58 additions and 158 deletions

View File

@ -4,20 +4,20 @@ from . import views
urlpatterns = [ urlpatterns = [
url(r'^circuits/$', views.CircuitListView.as_view(), name='circuit_list'), url(r'^circuits/$', views.CircuitListView.as_view(), name='circuit_list'),
url(r'^circuits/add/$', views.circuit_add, name='circuit_add'), url(r'^circuits/add/$', views.CircuitAddView.as_view(), name='circuit_add'),
url(r'^circuits/import/$', views.CircuitBulkImportView.as_view(), name='circuit_import'), url(r'^circuits/import/$', views.CircuitBulkImportView.as_view(), name='circuit_import'),
url(r'^circuits/edit/$', views.CircuitBulkEditView.as_view(), name='circuit_bulk_edit'), url(r'^circuits/edit/$', views.CircuitBulkEditView.as_view(), name='circuit_bulk_edit'),
url(r'^circuits/delete/$', views.CircuitBulkDeleteView.as_view(), name='circuit_bulk_delete'), url(r'^circuits/delete/$', views.CircuitBulkDeleteView.as_view(), name='circuit_bulk_delete'),
url(r'^circuits/(?P<pk>\d+)/$', views.circuit, name='circuit'), url(r'^circuits/(?P<pk>\d+)/$', views.circuit, name='circuit'),
url(r'^circuits/(?P<pk>\d+)/edit/$', views.circuit_edit, name='circuit_edit'), url(r'^circuits/(?P<pk>\d+)/edit/$', views.CircuitEditView.as_view(), name='circuit_edit'),
url(r'^circuits/(?P<pk>\d+)/delete/$', views.circuit_delete, name='circuit_delete'), url(r'^circuits/(?P<pk>\d+)/delete/$', views.CircuitDeleteView.as_view(), name='circuit_delete'),
url(r'^providers/$', views.ProviderListView.as_view(), name='provider_list'), url(r'^providers/$', views.ProviderListView.as_view(), name='provider_list'),
url(r'^providers/add/$', views.provider_add, name='provider_add'), url(r'^providers/add/$', views.ProviderAddView.as_view(), name='provider_add'),
url(r'^providers/import/$', views.ProviderBulkImportView.as_view(), name='provider_import'), url(r'^providers/import/$', views.ProviderBulkImportView.as_view(), name='provider_import'),
url(r'^providers/edit/$', views.ProviderBulkEditView.as_view(), name='provider_bulk_edit'), url(r'^providers/edit/$', views.ProviderBulkEditView.as_view(), name='provider_bulk_edit'),
url(r'^providers/delete/$', views.ProviderBulkDeleteView.as_view(), name='provider_bulk_delete'), url(r'^providers/delete/$', views.ProviderBulkDeleteView.as_view(), name='provider_bulk_delete'),
url(r'^providers/(?P<slug>[\w-]+)/$', views.provider, name='provider'), url(r'^providers/(?P<slug>[\w-]+)/$', views.provider, name='provider'),
url(r'^providers/(?P<slug>[\w-]+)/edit/$', views.provider_edit, name='provider_edit'), url(r'^providers/(?P<slug>[\w-]+)/edit/$', views.ProviderEditView.as_view(), name='provider_edit'),
url(r'^providers/(?P<slug>[\w-]+)/delete/$', views.provider_delete, name='provider_delete'), url(r'^providers/(?P<slug>[\w-]+)/delete/$', views.ProviderDeleteView.as_view(), name='provider_delete'),
] ]

View File

@ -1,16 +1,13 @@
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.decorators import permission_required
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.urlresolvers import reverse from django.db.models import Count
from django.db.models import Count, ProtectedError from django.shortcuts import get_object_or_404, render
from django.shortcuts import get_object_or_404, redirect, render
from utilities.error_handlers import handle_protectederror from utilities.views import BulkImportView, BulkEditView, BulkDeleteView, ObjectListView, ObjectAddView,\
from utilities.forms import ConfirmationForm ObjectEditView, ObjectDeleteView
from utilities.views import BulkImportView, BulkEditView, BulkDeleteView, ObjectListView
from .filters import CircuitFilter from .filters import CircuitFilter
from .forms import CircuitForm, CircuitImportForm, CircuitBulkEditForm, CircuitBulkDeleteForm, CircuitFilterForm, \ from .forms import CircuitForm, CircuitImportForm, CircuitBulkEditForm, CircuitBulkDeleteForm, CircuitFilterForm,\
ProviderForm, ProviderImportForm, ProviderBulkEditForm, ProviderBulkDeleteForm ProviderForm, ProviderImportForm, ProviderBulkEditForm, ProviderBulkDeleteForm
from .models import Circuit, Provider from .models import Circuit, Provider
from .tables import CircuitTable, CircuitBulkEditTable, ProviderTable, ProviderBulkEditTable from .tables import CircuitTable, CircuitBulkEditTable, ProviderTable, ProviderBulkEditTable
@ -39,74 +36,26 @@ def provider(request, slug):
}) })
@permission_required('circuits.add_provider') class ProviderAddView(PermissionRequiredMixin, ObjectAddView):
def provider_add(request): permission_required = 'circuits.add_provider'
model = Provider
if request.method == 'POST': form_class = ProviderForm
form = ProviderForm(request.POST) template_name = 'circuits/provider_edit.html'
if form.is_valid(): cancel_url = 'circuits:provider_list'
provider = form.save()
messages.success(request, "Added new provider: {0}".format(provider))
if '_addanother' in request.POST:
return redirect('circuits:provider_add')
else:
return redirect('circuits:provider', slug=provider.slug)
else:
form = ProviderForm()
return render(request, 'circuits/provider_edit.html', {
'form': form,
'cancel_url': reverse('circuits:provider_list'),
})
@permission_required('circuits.change_provider') class ProviderEditView(PermissionRequiredMixin, ObjectEditView):
def provider_edit(request, slug): permission_required = 'circuits.change_provider'
model = Provider
provider = get_object_or_404(Provider, slug=slug) form_class = ProviderForm
template_name = 'circuits/provider_edit.html'
if request.method == 'POST':
form = ProviderForm(request.POST, instance=provider)
if form.is_valid():
provider = form.save()
messages.success(request, "Modified provider {0}".format(provider))
return redirect('circuits:provider', slug=provider.slug)
else:
form = ProviderForm(instance=provider)
return render(request, 'circuits/provider_edit.html', {
'provider': provider,
'form': form,
'cancel_url': reverse('circuits:provider', kwargs={'slug': provider.slug}),
})
@permission_required('circuits.delete_provider') class ProviderDeleteView(PermissionRequiredMixin, ObjectDeleteView):
def provider_delete(request, slug): permission_required = 'circuits.delete_provider'
model = Provider
provider = get_object_or_404(Provider, slug=slug) template_name = 'circuits/provider_delete.html'
redirect_url = 'circuits:provider_list'
if request.method == 'POST':
form = ConfirmationForm(request.POST)
if form.is_valid():
try:
provider.delete()
messages.success(request, "Provider {0} has been deleted".format(provider))
return redirect('circuits:provider_list')
except ProtectedError, e:
handle_protectederror(provider, request, e)
return redirect('circuits:provider', slug=provider.slug)
else:
form = ConfirmationForm()
return render(request, 'circuits/provider_delete.html', {
'provider': provider,
'form': form,
'cancel_url': reverse('circuits:provider', kwargs={'slug': provider.slug})
})
class ProviderBulkImportView(PermissionRequiredMixin, BulkImportView): class ProviderBulkImportView(PermissionRequiredMixin, BulkImportView):
@ -166,76 +115,27 @@ def circuit(request, pk):
}) })
@permission_required('circuits.add_circuit') class CircuitAddView(PermissionRequiredMixin, ObjectAddView):
def circuit_add(request): permission_required = 'circuits.add_circuit'
model = Circuit
if request.method == 'POST': form_class = CircuitForm
form = CircuitForm(request.POST) template_name = 'circuits/circuit_edit.html'
if form.is_valid(): cancel_url = 'circuits:circuit_list'
circuit = form.save() fields_initial = ['site']
messages.success(request, "Added new circuit: {0}".format(circuit))
if '_addanother' in request.POST:
return redirect('circuits:circuit_add')
else:
return redirect('circuits:circuit', pk=circuit.pk)
else:
form = CircuitForm(initial={
'site': request.GET.get('site'),
})
return render(request, 'circuits/circuit_edit.html', {
'form': form,
'cancel_url': reverse('circuits:circuit_list'),
})
@permission_required('circuits.change_circuit') class CircuitEditView(PermissionRequiredMixin, ObjectEditView):
def circuit_edit(request, pk): permission_required = 'circuits.change_circuit'
model = Circuit
circuit = get_object_or_404(Circuit, pk=pk) form_class = CircuitForm
template_name = 'circuits/circuit_edit.html'
if request.method == 'POST':
form = CircuitForm(request.POST, instance=circuit)
if form.is_valid():
circuit = form.save()
messages.success(request, "Modified circuit {0}".format(circuit))
return redirect('circuits:circuit', pk=circuit.pk)
else:
form = CircuitForm(instance=circuit)
return render(request, 'circuits/circuit_edit.html', {
'circuit': circuit,
'form': form,
'cancel_url': reverse('circuits:circuit', kwargs={'pk': circuit.pk}),
})
@permission_required('circuits.delete_circuit') class CircuitDeleteView(PermissionRequiredMixin, ObjectDeleteView):
def circuit_delete(request, pk): permission_required = 'circuits.delete_circuit'
model = Circuit
circuit = get_object_or_404(Circuit, pk=pk) template_name = 'circuits/circuit_delete.html'
redirect_url = 'circuits:circuit_list'
if request.method == 'POST':
form = ConfirmationForm(request.POST)
if form.is_valid():
try:
circuit.delete()
messages.success(request, "Circuit {0} has been deleted".format(circuit))
return redirect('circuits:circuit_list')
except ProtectedError, e:
handle_protectederror(circuit, request, e)
return redirect('circuits:circuit', pk=circuit.pk)
else:
form = ConfirmationForm()
return render(request, 'circuits/circuit_delete.html', {
'circuit': circuit,
'form': form,
'cancel_url': reverse('circuits:circuit', kwargs={'pk': circuit.pk})
})
class CircuitBulkImportView(PermissionRequiredMixin, BulkImportView): class CircuitBulkImportView(PermissionRequiredMixin, BulkImportView):

View File

@ -1,8 +1,8 @@
{% extends 'utilities/confirmation_form.html' %} {% extends 'utilities/confirmation_form.html' %}
{% load form_helpers %} {% load form_helpers %}
{% block title %}Delete {{ circuit.provider }} Circuit {{ circuit.cid }}?{% endblock %} {% block title %}Delete {{ obj.provider }} - {{ obj.cid }}?{% endblock %}
{% block message %} {% block message %}
<p>Are you sure you want to delete rack {{ circuit }} from {{ circuit.site }}?</p> <p>Are you sure you want to delete circuit {{ obj }} from {{ obj.site }}?</p>
{% endblock %} {% endblock %}

View File

@ -1,11 +1,11 @@
{% extends '_base.html' %} {% extends '_base.html' %}
{% load form_helpers %} {% load form_helpers %}
{% block title %}{% if circuit %}Editing {{ circuit }}{% else %}Add a circuit{% endif %}{% endblock %} {% block title %}{% if obj %}Editing {{ obj }}{% else %}Add a circuit{% endif %}{% endblock %}
{% block content %} {% block content %}
{% if circuit %} {% if obj %}
<h1>Editing {{ circuit.provider }} circuit {{ circuit.cid }}</h1> <h1>Editing {{ obj.provider }} circuit {{ obj.cid }}</h1>
{% else %} {% else %}
<h1>Add a Circuit</h1> <h1>Add a Circuit</h1>
{% endif %} {% endif %}
@ -70,9 +70,9 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-12 text-right"> <div class="col-md-12 text-right">
{% if circuit %} {% if obj %}
<button type="submit" name="_update" class="btn btn-primary">Update</button> <button type="submit" name="_update" class="btn btn-primary">Update</button>
<a href="{% url 'circuits:circuit' pk=circuit.pk %}" class="btn btn-default">Cancel</a> <a href="{% url 'circuits:circuit' pk=obj.pk %}" class="btn btn-default">Cancel</a>
{% else %} {% else %}
<button type="submit" name="_create" class="btn btn-primary">Create</button> <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> <button type="submit" name="_addanother" class="btn btn-primary">Create and Add Another</button>

View File

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

View File

@ -1,11 +1,11 @@
{% extends '_base.html' %} {% extends '_base.html' %}
{% load form_helpers %} {% load form_helpers %}
{% block title %}{% if provider %}Editing {{ provider }}{% else %}Add a provider{% endif %}{% endblock %} {% block title %}{% if obj %}Editing {{ obj }}{% else %}Add a provider{% endif %}{% endblock %}
{% block content %} {% block content %}
{% if provider %} {% if obj %}
<h1>Editing {{ provider }}</h1> <h1>Editing {{ obj }}</h1>
{% else %} {% else %}
<h1>Add a Provider</h1> <h1>Add a Provider</h1>
{% endif %} {% endif %}
@ -55,9 +55,9 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-12 text-right"> <div class="col-md-12 text-right">
{% if provider %} {% if obj %}
<button type="submit" name="_update" class="btn btn-primary">Update</button> <button type="submit" name="_update" class="btn btn-primary">Update</button>
<a href="{% url 'circuits:provider' slug=provider.slug %}" class="btn btn-default">Cancel</a> <a href="{% url 'circuits:provider' slug=obj.slug %}" class="btn btn-default">Cancel</a>
{% else %} {% else %}
<button type="submit" name="_create" class="btn btn-primary">Create</button> <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> <button type="submit" name="_addanother" class="btn btn-primary">Create and Add Another</button>