Преглед изворни кода

Converted circuits add/edit/delete views to CBVs

Jeremy Stretch пре 9 година
родитељ
комит
9acd23e08a

+ 6 - 6
netbox/circuits/urls.py

@@ -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+)/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/$', 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-]+)/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 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, 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 .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')
-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):
 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):
 class CircuitBulkImportView(PermissionRequiredMixin, BulkImportView):

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

@@ -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 %}

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

@@ -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 %}
-	<h1>Editing {{ circuit.provider }} circuit {{ circuit.cid }}</h1>
+{% if obj %}
+	<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>

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

@@ -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 %}

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

@@ -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 %}
-	<h1>Editing {{ provider }}</h1>
+{% if obj %}
+	<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>