Covnerted DCIM site add/edit/delete views to CBVs

This commit is contained in:
Jeremy Stretch 2016-05-03 16:26:33 -04:00
parent 9acd23e08a
commit d51992e98b
4 changed files with 28 additions and 75 deletions

View File

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

View File

@ -18,7 +18,8 @@ from circuits.models import Circuit
from extras.models import TopologyMap from extras.models import TopologyMap
from utilities.error_handlers import handle_protectederror from utilities.error_handlers import handle_protectederror
from utilities.forms import ConfirmationForm 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, \ from .filters import RackGroupFilter, RackFilter, DeviceTypeFilter, DeviceFilter, ConsoleConnectionFilter, \
PowerConnectionFilter, InterfaceConnectionFilter PowerConnectionFilter, InterfaceConnectionFilter
@ -99,74 +100,26 @@ def site(request, slug):
}) })
@permission_required('dcim.add_site') class SiteAddView(PermissionRequiredMixin, ObjectAddView):
def site_add(request): permission_required = 'dcim.add_site'
model = Site
if request.method == 'POST': form_class = SiteForm
form = SiteForm(request.POST) template_name = 'dcim/site_edit.html'
if form.is_valid(): cancel_url = 'dcim:site_list'
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') class SiteEditView(PermissionRequiredMixin, ObjectEditView):
def site_edit(request, slug): permission_required = 'dcim.change_site'
model = Site
site = get_object_or_404(Site, slug=slug) form_class = SiteForm
template_name = 'dcim/site_edit.html'
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') class SiteDeleteView(PermissionRequiredMixin, ObjectDeleteView):
def site_delete(request, slug): permission_required = 'dcim.delete_site'
model = Site
site = get_object_or_404(Site, slug=slug) template_name = 'dcim/site_delete.html'
redirect_url = 'dcim:site_list'
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 SiteBulkImportView(PermissionRequiredMixin, BulkImportView): class SiteBulkImportView(PermissionRequiredMixin, BulkImportView):

View File

@ -1,8 +1,8 @@
{% extends 'utilities/confirmation_form.html' %} {% extends 'utilities/confirmation_form.html' %}
{% load form_helpers %} {% load form_helpers %}
{% block title %}Delete site {{ site }}?{% endblock %} {% block title %}Delete site {{ obj }}?{% endblock %}
{% block message %} {% 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 %} {% endblock %}

View File

@ -1,11 +1,11 @@
{% extends '_base.html' %} {% extends '_base.html' %}
{% load form_helpers %} {% 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 %} {% block content %}
{% if site %} {% if obj %}
<h1>Site {{ site }}</h1> <h1>Site {{ obj }}</h1>
{% else %} {% else %}
<h1>Add a Site</h1> <h1>Add a Site</h1>
{% endif %} {% endif %}
@ -48,9 +48,9 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-12 text-right"> <div class="col-md-12 text-right">
{% if site %} {% 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 '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 %} {% 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>