From e1479be3d05b9328247829eefde4c9db8a89a4a6 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 3 May 2016 16:50:48 -0400 Subject: [PATCH] Converted DCIM DeviceType add/edit/delete views to CBVs --- netbox/dcim/models.py | 3 + netbox/dcim/urls.py | 6 +- netbox/dcim/views.py | 154 ++----------------- netbox/templates/dcim/devicetype_delete.html | 4 +- netbox/templates/dcim/devicetype_edit.html | 10 +- 5 files changed, 29 insertions(+), 148 deletions(-) diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index dc55ed95c..f4b652927 100644 --- a/netbox/dcim/models.py +++ b/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): """ diff --git a/netbox/dcim/urls.py b/netbox/dcim/urls.py index 473042542..7b57f459b 100644 --- a/netbox/dcim/urls.py +++ b/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\d+)/$', views.devicetype, name='devicetype'), - url(r'^device-types/(?P\d+)/edit/$', views.devicetype_edit, name='devicetype_edit'), - url(r'^device-types/(?P\d+)/delete/$', views.devicetype_delete, name='devicetype_delete'), + url(r'^device-types/(?P\d+)/edit/$', views.DeviceTypeEditView.as_view(), name='devicetype_edit'), + url(r'^device-types/(?P\d+)/delete/$', views.DeviceTypeDeleteView.as_view(), name='devicetype_delete'), # Component templates url(r'^device-types/(?P\d+)/console-ports/add/$', views.ConsolePortTemplateAddView.as_view(), diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index f69ce8b9d..008da96e8 100644 --- a/netbox/dcim/views.py +++ b/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}), - }) +class DeviceTypeEditView(PermissionRequiredMixin, ObjectEditView): + permission_required = 'dcim.change_devicetype' + model = DeviceType + form_class = DeviceTypeForm + template_name = 'dcim/devicetype_edit.html' -@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) - - 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): diff --git a/netbox/templates/dcim/devicetype_delete.html b/netbox/templates/dcim/devicetype_delete.html index 4965ff5a1..679945093 100644 --- a/netbox/templates/dcim/devicetype_delete.html +++ b/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 %} -

Are you sure you want to delete {{ devicetype }}?

+

Are you sure you want to delete {{ obj }}?

{% endblock %} diff --git a/netbox/templates/dcim/devicetype_edit.html b/netbox/templates/dcim/devicetype_edit.html index 0ef6481cf..d840356dd 100644 --- a/netbox/templates/dcim/devicetype_edit.html +++ b/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 %} -

{{ devicetype }}

+{% if obj %} +

{{ obj }}

{% else %}

Add a Device Type

{% endif %} @@ -35,9 +35,9 @@
- {% if devicetype %} + {% if obj %} - Cancel + Cancel {% else %}