Browse Source

Converted DCIM DeviceType add/edit/delete views to CBVs

Jeremy Stretch 9 years ago
parent
commit
e1479be3d0

+ 3 - 0
netbox/dcim/models.py

@@ -293,6 +293,9 @@ class DeviceType(models.Model):
     def __unicode__(self):
         return "{0} {1}".format(self.manufacturer, self.model)
 
+    def get_absolute_url(self):
+        return reverse('dcim:devicetype', args=[self.pk])
+
 
 class ConsolePortTemplate(models.Model):
     """

+ 3 - 3
netbox/dcim/urls.py

@@ -35,12 +35,12 @@ urlpatterns = [
 
     # Device types
     url(r'^device-types/$', views.DeviceTypeListView.as_view(), name='devicetype_list'),
-    url(r'^device-types/add/$', views.devicetype_add, name='devicetype_add'),
+    url(r'^device-types/add/$', views.DeviceTypeAddView.as_view(), name='devicetype_add'),
     url(r'^device-types/edit/$', views.DeviceTypeBulkEditView.as_view(), name='devicetype_bulk_edit'),
     url(r'^device-types/delete/$', views.DeviceTypeBulkDeleteView.as_view(), name='devicetype_bulk_delete'),
     url(r'^device-types/(?P<pk>\d+)/$', views.devicetype, name='devicetype'),
-    url(r'^device-types/(?P<pk>\d+)/edit/$', views.devicetype_edit, name='devicetype_edit'),
-    url(r'^device-types/(?P<pk>\d+)/delete/$', views.devicetype_delete, name='devicetype_delete'),
+    url(r'^device-types/(?P<pk>\d+)/edit/$', views.DeviceTypeEditView.as_view(), name='devicetype_edit'),
+    url(r'^device-types/(?P<pk>\d+)/delete/$', views.DeviceTypeDeleteView.as_view(), name='devicetype_delete'),
 
     # Component templates
     url(r'^device-types/(?P<pk>\d+)/console-ports/add/$', views.ConsolePortTemplateAddView.as_view(),

+ 16 - 138
netbox/dcim/views.py

@@ -206,54 +206,6 @@ class RackAddView(PermissionRequiredMixin, ObjectAddView):
     cancel_url = 'dcim:rack_list'
 
 
-# @permission_required('dcim.add_rack')
-# def rack_add(request):
-#
-#     if request.method == 'POST':
-#         form = RackForm(request.POST)
-#         if form.is_valid():
-#             rack = form.save()
-#             messages.success(request, "Added new rack to {}: {}".format(rack.site.name, rack))
-#             if '_addanother' in request.POST:
-#                 base_url = reverse('dcim:rack_add')
-#                 params = urlencode({
-#                     'site': rack.site.pk,
-#                 })
-#                 return HttpResponseRedirect('{}?{}'.format(base_url, params))
-#             else:
-#                 return redirect('dcim:rack', pk=rack.pk)
-#
-#     else:
-#         form = RackForm()
-#
-#     return render(request, 'dcim/rack_edit.html', {
-#         'form': form,
-#         'cancel_url': reverse('dcim:rack_list'),
-#     })
-
-
-# @permission_required('dcim.change_rack')
-# def rack_edit(request, pk):
-#
-#     rack = get_object_or_404(Rack, pk=pk)
-#
-#     if request.method == 'POST':
-#         form = RackForm(request.POST, instance=rack)
-#         if form.is_valid():
-#             rack = form.save()
-#             messages.success(request, "Modified rack {0}".format(rack.name))
-#             return redirect('dcim:rack', pk=rack.pk)
-#
-#     else:
-#         form = RackForm(instance=rack)
-#
-#     return render(request, 'dcim/rack_edit.html', {
-#         'rack': rack,
-#         'form': form,
-#         'cancel_url': reverse('dcim:rack', kwargs={'pk': rack.pk}),
-#     })
-
-
 class RackEditView(PermissionRequiredMixin, ObjectEditView):
     permission_required = 'dcim.change_rack'
     model = Rack
@@ -261,32 +213,6 @@ class RackEditView(PermissionRequiredMixin, ObjectEditView):
     template_name = 'dcim/rack_edit.html'
 
 
-# @permission_required('dcim.delete_rack')
-# def rack_delete(request, pk):
-#
-#     rack = get_object_or_404(Rack, pk=pk)
-#
-#     if request.method == 'POST':
-#         form = ConfirmationForm(request.POST)
-#         if form.is_valid():
-#             try:
-#                 rack.delete()
-#                 messages.success(request, "Rack {0} has been deleted".format(rack))
-#                 return redirect('dcim:rack_list')
-#             except ProtectedError, e:
-#                 handle_protectederror(rack, request, e)
-#                 return redirect('dcim:rack', pk=rack.pk)
-#
-#     else:
-#         form = ConfirmationForm()
-#
-#     return render(request, 'dcim/rack_delete.html', {
-#         'rack': rack,
-#         'form': form,
-#         'cancel_url': reverse('dcim:rack', kwargs={'pk': rack.pk}),
-#     })
-
-
 class RackDeleteView(PermissionRequiredMixin, ObjectDeleteView):
     permission_required = 'dcim.delete_rack'
     model = Rack
@@ -370,74 +296,26 @@ def devicetype(request, pk):
     })
 
 
-@permission_required('dcim.add_devicetype')
-def devicetype_add(request):
-
-    if request.method == 'POST':
-        form = DeviceTypeForm(request.POST)
-        if form.is_valid():
-            devicetype = form.save()
-            messages.success(request, "Added new device type: {}".format(devicetype))
-            if '_addanother' in request.POST:
-                return redirect('dcim:devicetype_add')
-            else:
-                return redirect('dcim:devicetype', pk=devicetype.pk)
-
-    else:
-        form = DeviceTypeForm()
-
-    return render(request, 'dcim/devicetype_edit.html', {
-        'form': form,
-        'cancel_url': reverse('dcim:devicetype_list'),
-    })
-
+class DeviceTypeAddView(PermissionRequiredMixin, ObjectAddView):
+    permission_required = 'dcim.add_devicetype'
+    model = DeviceType
+    form_class = DeviceTypeForm
+    template_name = 'dcim/devicetype_edit.html'
+    cancel_url = 'dcim:devicetype_list'
 
-@permission_required('dcim.change_devicetype')
-def devicetype_edit(request, pk):
 
-    devicetype = get_object_or_404(DeviceType, pk=pk)
-
-    if request.method == 'POST':
-        form = DeviceTypeForm(request.POST, instance=devicetype)
-        if form.is_valid():
-            devicetype = form.save()
-            messages.success(request, "Modified device type {}".format(devicetype))
-            return redirect('dcim:devicetype', pk=devicetype.pk)
-
-    else:
-        form = DeviceTypeForm(instance=devicetype)
-
-    return render(request, 'dcim/devicetype_edit.html', {
-        'devicetype': devicetype,
-        'form': form,
-        'cancel_url': reverse('dcim:devicetype', kwargs={'pk': devicetype.pk}),
-    })
-
-
-@permission_required('dcim.delete_devicetype')
-def devicetype_delete(request, pk):
-
-    devicetype = get_object_or_404(DeviceType, pk=pk)
-
-    if request.method == 'POST':
-        form = ConfirmationForm(request.POST)
-        if form.is_valid():
-            try:
-                devicetype.delete()
-                messages.success(request, "Device type {} has been deleted".format(devicetype))
-                return redirect('dcim:devicetype_list')
-            except ProtectedError, e:
-                handle_protectederror(devicetype, request, e)
-                return redirect('dcim:devicetype', pk=devicetype.pk)
+class DeviceTypeEditView(PermissionRequiredMixin, ObjectEditView):
+    permission_required = 'dcim.change_devicetype'
+    model = DeviceType
+    form_class = DeviceTypeForm
+    template_name = 'dcim/devicetype_edit.html'
 
-    else:
-        form = ConfirmationForm()
 
-    return render(request, 'dcim/devicetype_delete.html', {
-        'devicetype': device,
-        'form': form,
-        'cancel_url': reverse('dcim:devicetype', kwargs={'pk': devicetype.pk}),
-    })
+class DeviceTypeDeleteView(PermissionRequiredMixin, ObjectDeleteView):
+    permission_required = 'dcim.delete_devicetype'
+    model = DeviceType
+    template_name = 'dcim/devicetype_delete.html'
+    redirect_url = 'dcim:devicetype_list'
 
 
 class DeviceTypeBulkEditView(PermissionRequiredMixin, BulkEditView):

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

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

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

@@ -1,11 +1,11 @@
 {% extends '_base.html' %}
 {% load form_helpers %}
 
-{% block title %}{% if devicetype %}Editing device type {{ devicetype }}{% else %}Add a Device Type{% endif %}{% endblock %}
+{% block title %}{% if obj %}Editing device type {{ obj }}{% else %}Add a Device Type{% endif %}{% endblock %}
 
 {% block content %}
-{% if devicetype %}
-	<h1>{{ devicetype }}</h1>
+{% if obj %}
+	<h1>{{ obj }}</h1>
 {% else %}
 	<h1>Add a Device Type</h1>
 {% endif %}
@@ -35,9 +35,9 @@
     </div>
     <div class="row">
         <div class="col-md-6 col-md-offset-3 text-center">
-            {% if devicetype %}
+            {% if obj %}
                 <button type="submit" name="_update" class="btn btn-primary">Update</button>
-                <a href="{% url 'dcim:devicetype' pk=devicetype.pk %}" class="btn btn-default">Cancel</a>
+                <a href="{% url 'dcim:devicetype' 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>