From 7428b83c908b94b3e66e13986dd66a3a691448a4 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 15 Jun 2016 14:00:45 -0400 Subject: [PATCH] Introduced ability to manually create Modules --- netbox/dcim/urls.py | 1 + netbox/dcim/views.py | 25 +++++++++++++++++++++ netbox/templates/dcim/device_inventory.html | 16 ++++++++----- netbox/templates/dcim/module_edit.html | 6 ++--- 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/netbox/dcim/urls.py b/netbox/dcim/urls.py index 91ab46b21..1665927a2 100644 --- a/netbox/dcim/urls.py +++ b/netbox/dcim/urls.py @@ -142,6 +142,7 @@ urlpatterns = [ url(r'^interfaces/(?P\d+)/delete/$', views.interface_delete, name='interface_delete'), # Modules + url(r'^devices/(?P\d+)/modules/add/$', views.module_add, name='module_add'), url(r'^modules/(?P\d+)/edit/$', views.module_edit, name='module_edit'), url(r'^modules/(?P\d+)/delete/$', views.module_delete, name='module_delete'), diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 05e915240..3d58456bc 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -1503,6 +1503,31 @@ def ipaddress_assign(request, pk): # Modules # +@permission_required('dcim.add_module') +def module_add(request, pk): + + device = get_object_or_404(Device, pk=pk) + + if request.method == 'POST': + form = forms.ModuleForm(request.POST) + if form.is_valid(): + module = form.save(commit=False) + module.device = device + module.save() + messages.success(request, "Added module {} to {}".format(module.name, module.device.name)) + return redirect('dcim:device_inventory', pk=module.device.pk) + + else: + form = forms.ModuleForm() + + return render(request, 'dcim/module_edit.html', { + 'device': device, + 'form': form, + 'cancel_url': reverse('dcim:device_inventory', kwargs={'pk': device.pk}), + }) + + + @permission_required('dcim.change_module') def module_edit(request, pk): diff --git a/netbox/templates/dcim/device_inventory.html b/netbox/templates/dcim/device_inventory.html index e4aa899f8..9f68e0cb1 100644 --- a/netbox/templates/dcim/device_inventory.html +++ b/netbox/templates/dcim/device_inventory.html @@ -45,8 +45,8 @@ - + @@ -55,8 +55,8 @@ {% for m in modules %} - + {% for m2 in m.submodules.all %} - + {% for m3 in m2.submodules.all %} - + {% for m4 in m3.submodules.all %} - +
Module Part Number Serial Number
{% if not m.discovered %}{% endif %} {{ m.name }}{% if not m.discovered %}{% endif %} {{ m.part_id }} {{ m.serial }} @@ -70,8 +70,8 @@
{% if not m.discovered %}{% endif %} {{ m2.name }}{% if not m2.discovered %}{% endif %} {{ m2.part_id }} {{ m2.serial }} @@ -85,8 +85,8 @@
{% if not m.discovered %}{% endif %} {{ m3.name }}{% if not m3.discovered %}{% endif %} {{ m3.part_id }} {{ m3.serial }} @@ -100,8 +100,8 @@
{% if not m.discovered %}{% endif %} {{ m4.name }}{% if not m4.discovered %}{% endif %} {{ m4.part_id }} {{ m4.serial }} @@ -120,6 +120,12 @@
+ {% if perms.dcim.add_module %} + + + Add a Module + + {% endif %} {% endblock %} diff --git a/netbox/templates/dcim/module_edit.html b/netbox/templates/dcim/module_edit.html index 409c8ffc5..b1a1d4334 100644 --- a/netbox/templates/dcim/module_edit.html +++ b/netbox/templates/dcim/module_edit.html @@ -1,7 +1,7 @@ {% extends '_base.html' %} {% load form_helpers %} -{% block title %}Editing {{ module.device }} {{ module }}{% endblock %} +{% block title %}{% if module %}Editing {{ module.device }} {{ module }}{% else %}Add a Module to {{ device }}{% endif %}{% endblock %} {% block content %}
@@ -18,13 +18,13 @@ {% endif %}
- Editing {{ module.device }} {{ module }} + {% if module %}Editing {{ module.device }} {{ module }}{% else %}Add a Module to {{ device }}{% endif %}
-

{{ module.device }}

+

{% if module %}{{ module.device }}{% else %}{{ device }}{% endif %}

{% render_form form %}