Browse Source

Covnerted DCIM site add/edit/delete views to CBVs

Jeremy Stretch 9 years ago
parent
commit
d51992e98b

+ 3 - 3
netbox/dcim/urls.py

@@ -11,11 +11,11 @@ urlpatterns = [
 
     # Sites
     url(r'^sites/$', views.SiteListView.as_view(), name='site_list'),
-    url(r'^sites/add/$', views.site_add, name='site_add'),
+    url(r'^sites/add/$', views.SiteAddView.as_view(), name='site_add'),
     url(r'^sites/import/$', views.SiteBulkImportView.as_view(), name='site_import'),
     url(r'^sites/(?P<slug>[\w-]+)/$', views.site, name='site'),
-    url(r'^sites/(?P<slug>[\w-]+)/edit/$', views.site_edit, name='site_edit'),
-    url(r'^sites/(?P<slug>[\w-]+)/delete/$', views.site_delete, name='site_delete'),
+    url(r'^sites/(?P<slug>[\w-]+)/edit/$', views.SiteEditView.as_view(), name='site_edit'),
+    url(r'^sites/(?P<slug>[\w-]+)/delete/$', views.SiteDeleteView.as_view(), name='site_delete'),
 
     # Rack groups
     url(r'^rack-groups/$', views.RackGroupListView.as_view(), name='rackgroup_list'),

+ 18 - 65
netbox/dcim/views.py

@@ -18,7 +18,8 @@ from circuits.models import Circuit
 from extras.models import TopologyMap
 from utilities.error_handlers import handle_protectederror
 from utilities.forms import ConfirmationForm
-from utilities.views import ObjectListView, BulkImportView, BulkEditView, BulkDeleteView
+from utilities.views import ObjectListView, BulkImportView, BulkEditView, BulkDeleteView, ObjectAddView,\
+    ObjectEditView, ObjectDeleteView
 
 from .filters import RackGroupFilter, RackFilter, DeviceTypeFilter, DeviceFilter, ConsoleConnectionFilter, \
     PowerConnectionFilter, InterfaceConnectionFilter
@@ -99,74 +100,26 @@ def site(request, slug):
     })
 
 
-@permission_required('dcim.add_site')
-def site_add(request):
-
-    if request.method == 'POST':
-        form = SiteForm(request.POST)
-        if form.is_valid():
-            site = form.save()
-            messages.success(request, "Added new site: {0}".format(site.name))
-            if '_addanother' in request.POST:
-                return redirect('dcim:site_add')
-            else:
-                return redirect('dcim:site', slug=site.slug)
-
-    else:
-        form = SiteForm()
-
-    return render(request, 'dcim/site_edit.html', {
-        'form': form,
-        'cancel_url': reverse('dcim:site_list'),
-    })
-
-
-@permission_required('dcim.change_site')
-def site_edit(request, slug):
-
-    site = get_object_or_404(Site, slug=slug)
-
-    if request.method == 'POST':
-        form = SiteForm(request.POST, instance=site)
-        if form.is_valid():
-            site = form.save()
-            messages.success(request, "Modified site {0}".format(site.name))
-            return redirect('dcim:site', slug=site.slug)
-
-    else:
-        form = SiteForm(instance=site)
-
-    return render(request, 'dcim/site_edit.html', {
-        'site': site,
-        'form': form,
-        'cancel_url': reverse('dcim:site', kwargs={'slug': site.slug}),
-    })
-
-
-@permission_required('dcim.delete_site')
-def site_delete(request, slug):
+class SiteAddView(PermissionRequiredMixin, ObjectAddView):
+    permission_required = 'dcim.add_site'
+    model = Site
+    form_class = SiteForm
+    template_name = 'dcim/site_edit.html'
+    cancel_url = 'dcim:site_list'
 
-    site = get_object_or_404(Site, slug=slug)
 
-    if request.method == 'POST':
-        form = ConfirmationForm(request.POST)
-        if form.is_valid():
-            try:
-                site.delete()
-                messages.success(request, "Site {0} has been deleted".format(site))
-                return redirect('dcim:site_list')
-            except ProtectedError, e:
-                handle_protectederror(site, request, e)
-                return redirect('dcim:site', slug=site.slug)
+class SiteEditView(PermissionRequiredMixin, ObjectEditView):
+    permission_required = 'dcim.change_site'
+    model = Site
+    form_class = SiteForm
+    template_name = 'dcim/site_edit.html'
 
-    else:
-        form = ConfirmationForm()
 
-    return render(request, 'dcim/site_delete.html', {
-        'site': site,
-        'form': form,
-        'cancel_url': reverse('dcim:site', kwargs={'slug': site.slug}),
-    })
+class SiteDeleteView(PermissionRequiredMixin, ObjectDeleteView):
+    permission_required = 'dcim.delete_site'
+    model = Site
+    template_name = 'dcim/site_delete.html'
+    redirect_url = 'dcim:site_list'
 
 
 class SiteBulkImportView(PermissionRequiredMixin, BulkImportView):

+ 2 - 2
netbox/templates/dcim/site_delete.html

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

+ 5 - 5
netbox/templates/dcim/site_edit.html

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