diff --git a/netbox/dcim/urls.py b/netbox/dcim/urls.py index 5cb11d405..e1fa470e1 100644 --- a/netbox/dcim/urls.py +++ b/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[\w-]+)/$', views.site, name='site'), - url(r'^sites/(?P[\w-]+)/edit/$', views.site_edit, name='site_edit'), - url(r'^sites/(?P[\w-]+)/delete/$', views.site_delete, name='site_delete'), + url(r'^sites/(?P[\w-]+)/edit/$', views.SiteEditView.as_view(), name='site_edit'), + url(r'^sites/(?P[\w-]+)/delete/$', views.SiteDeleteView.as_view(), name='site_delete'), # Rack groups url(r'^rack-groups/$', views.RackGroupListView.as_view(), name='rackgroup_list'), diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 47e6235da..abed5d628 100644 --- a/netbox/dcim/views.py +++ b/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'), - }) +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' -@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}), - }) +class SiteEditView(PermissionRequiredMixin, ObjectEditView): + permission_required = 'dcim.change_site' + model = Site + form_class = SiteForm + template_name = 'dcim/site_edit.html' -@permission_required('dcim.delete_site') -def site_delete(request, slug): - - 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) - - 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): diff --git a/netbox/templates/dcim/site_delete.html b/netbox/templates/dcim/site_delete.html index e1a9d0d1d..0325d7a9e 100644 --- a/netbox/templates/dcim/site_delete.html +++ b/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 %} -

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

+

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

{% endblock %} diff --git a/netbox/templates/dcim/site_edit.html b/netbox/templates/dcim/site_edit.html index 85a3f56dc..51e3844f8 100644 --- a/netbox/templates/dcim/site_edit.html +++ b/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 %} -

Site {{ site }}

+{% if obj %} +

Site {{ obj }}

{% else %}

Add a Site

{% endif %} @@ -48,9 +48,9 @@
- {% if site %} + {% if obj %} - Cancel + Cancel {% else %}