Просмотр исходного кода

Converted circuits add/edit/delete views to CBVs

Jeremy Stretch 9 лет назад
Родитель
Сommit
9acd23e08a

+ 6 - 6
netbox/circuits/urls.py

@@ -4,20 +4,20 @@ from . import views
 
 urlpatterns = [
     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/edit/$', views.CircuitBulkEditView.as_view(), name='circuit_bulk_edit'),
     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+)/edit/$', views.circuit_edit, name='circuit_edit'),
-    url(r'^circuits/(?P<pk>\d+)/delete/$', views.circuit_delete, name='circuit_delete'),
+    url(r'^circuits/(?P<pk>\d+)/edit/$', views.CircuitEditView.as_view(), name='circuit_edit'),
+    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/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/edit/$', views.ProviderBulkEditView.as_view(), name='provider_bulk_edit'),
     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-]+)/edit/$', views.provider_edit, name='provider_edit'),
-    url(r'^providers/(?P<slug>[\w-]+)/delete/$', views.provider_delete, name='provider_delete'),
+    url(r'^providers/(?P<slug>[\w-]+)/edit/$', views.ProviderEditView.as_view(), name='provider_edit'),
+    url(r'^providers/(?P<slug>[\w-]+)/delete/$', views.ProviderDeleteView.as_view(), name='provider_delete'),
 ]

+ 38 - 138
netbox/circuits/views.py

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

+ 2 - 2
netbox/templates/circuits/circuit_delete.html

@@ -1,8 +1,8 @@
 {% extends 'utilities/confirmation_form.html' %}
 {% load form_helpers %}
 
-{% block title %}Delete {{ circuit.provider }} Circuit {{ circuit.cid }}?{% endblock %}
+{% block title %}Delete {{ obj.provider }} - {{ obj.cid }}?{% endblock %}
 
 {% 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 %}

+ 5 - 5
netbox/templates/circuits/circuit_edit.html

@@ -1,11 +1,11 @@
 {% extends '_base.html' %}
 {% 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 %}
-{% if circuit %}
-	<h1>Editing {{ circuit.provider }} circuit {{ circuit.cid }}</h1>
+{% if obj %}
+	<h1>Editing {{ obj.provider }} circuit {{ obj.cid }}</h1>
 {% else %}
 	<h1>Add a Circuit</h1>
 {% endif %}
@@ -70,9 +70,9 @@
     </div>
     <div class="row">
         <div class="col-md-12 text-right">
-            {% if circuit %}
+            {% if obj %}
                 <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 %}
                 <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>

+ 2 - 2
netbox/templates/circuits/provider_delete.html

@@ -1,8 +1,8 @@
 {% extends 'utilities/confirmation_form.html' %}
 {% load form_helpers %}
 
-{% block title %}Delete provider {{ provider }}?{% endblock %}
+{% block title %}Delete provider {{ obj }}?{% endblock %}
 
 {% 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 %}

+ 5 - 5
netbox/templates/circuits/provider_edit.html

@@ -1,11 +1,11 @@
 {% extends '_base.html' %}
 {% 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 %}
-{% if provider %}
-	<h1>Editing {{ provider }}</h1>
+{% if obj %}
+	<h1>Editing {{ obj }}</h1>
 {% else %}
 	<h1>Add a Provider</h1>
 {% endif %}
@@ -55,9 +55,9 @@
     </div>
     <div class="row">
         <div class="col-md-12 text-right">
-            {% if provider %}
+            {% if obj %}
                 <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 %}
                 <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>