Browse Source

Standardized device component edit views to use ObjectEditView()

Jeremy Stretch 8 years ago
parent
commit
fd38daf0c5

+ 21 - 0
netbox/dcim/models.py

@@ -991,6 +991,9 @@ class ConsolePort(models.Model):
     def __unicode__(self):
     def __unicode__(self):
         return self.name
         return self.name
 
 
+    def get_absolute_url(self):
+        return self.device.get_absolute_url()
+
     # Used for connections export
     # Used for connections export
     def to_csv(self):
     def to_csv(self):
         return ','.join([
         return ','.join([
@@ -1032,6 +1035,9 @@ class ConsoleServerPort(models.Model):
     def __unicode__(self):
     def __unicode__(self):
         return self.name
         return self.name
 
 
+    def get_absolute_url(self):
+        return self.device.get_absolute_url()
+
 
 
 class PowerPort(models.Model):
 class PowerPort(models.Model):
     """
     """
@@ -1050,6 +1056,9 @@ class PowerPort(models.Model):
     def __unicode__(self):
     def __unicode__(self):
         return self.name
         return self.name
 
 
+    def get_absolute_url(self):
+        return self.device.get_absolute_url()
+
     # Used for connections export
     # Used for connections export
     def to_csv(self):
     def to_csv(self):
         return ','.join([
         return ','.join([
@@ -1085,6 +1094,9 @@ class PowerOutlet(models.Model):
     def __unicode__(self):
     def __unicode__(self):
         return self.name
         return self.name
 
 
+    def get_absolute_url(self):
+        return self.device.get_absolute_url()
+
 
 
 class InterfaceManager(models.Manager):
 class InterfaceManager(models.Manager):
 
 
@@ -1121,6 +1133,9 @@ class Interface(models.Model):
     def __unicode__(self):
     def __unicode__(self):
         return self.name
         return self.name
 
 
+    def get_absolute_url(self):
+        return self.device.get_absolute_url()
+
     def clean(self):
     def clean(self):
 
 
         if self.form_factor == IFACE_FF_VIRTUAL and self.is_connected:
         if self.form_factor == IFACE_FF_VIRTUAL and self.is_connected:
@@ -1209,6 +1224,9 @@ class DeviceBay(models.Model):
     def __unicode__(self):
     def __unicode__(self):
         return u'{} - {}'.format(self.device.name, self.name)
         return u'{} - {}'.format(self.device.name, self.name)
 
 
+    def get_absolute_url(self):
+        return self.device.get_absolute_url()
+
     def clean(self):
     def clean(self):
 
 
         # Validate that the parent Device can have DeviceBays
         # Validate that the parent Device can have DeviceBays
@@ -1242,3 +1260,6 @@ class Module(models.Model):
 
 
     def __unicode__(self):
     def __unicode__(self):
         return self.name
         return self.name
+
+    def get_absolute_url(self):
+        return reverse('dcim:device_inventory', args=[self.device.pk])

+ 7 - 7
netbox/dcim/urls.py

@@ -110,7 +110,7 @@ urlpatterns = [
     url(r'^devices/(?P<pk>\d+)/console-ports/delete/$', views.ConsolePortBulkDeleteView.as_view(), name='consoleport_bulk_delete'),
     url(r'^devices/(?P<pk>\d+)/console-ports/delete/$', views.ConsolePortBulkDeleteView.as_view(), name='consoleport_bulk_delete'),
     url(r'^console-ports/(?P<pk>\d+)/connect/$', views.consoleport_connect, name='consoleport_connect'),
     url(r'^console-ports/(?P<pk>\d+)/connect/$', views.consoleport_connect, name='consoleport_connect'),
     url(r'^console-ports/(?P<pk>\d+)/disconnect/$', views.consoleport_disconnect, name='consoleport_disconnect'),
     url(r'^console-ports/(?P<pk>\d+)/disconnect/$', views.consoleport_disconnect, name='consoleport_disconnect'),
-    url(r'^console-ports/(?P<pk>\d+)/edit/$', views.consoleport_edit, name='consoleport_edit'),
+    url(r'^console-ports/(?P<pk>\d+)/edit/$', views.ConsolePortEditView.as_view(), name='consoleport_edit'),
     url(r'^console-ports/(?P<pk>\d+)/delete/$', views.consoleport_delete, name='consoleport_delete'),
     url(r'^console-ports/(?P<pk>\d+)/delete/$', views.consoleport_delete, name='consoleport_delete'),
 
 
     # Console server ports
     # Console server ports
@@ -118,7 +118,7 @@ urlpatterns = [
     url(r'^devices/(?P<pk>\d+)/console-server-ports/delete/$', views.ConsoleServerPortBulkDeleteView.as_view(), name='consoleserverport_bulk_delete'),
     url(r'^devices/(?P<pk>\d+)/console-server-ports/delete/$', views.ConsoleServerPortBulkDeleteView.as_view(), name='consoleserverport_bulk_delete'),
     url(r'^console-server-ports/(?P<pk>\d+)/connect/$', views.consoleserverport_connect, name='consoleserverport_connect'),
     url(r'^console-server-ports/(?P<pk>\d+)/connect/$', views.consoleserverport_connect, name='consoleserverport_connect'),
     url(r'^console-server-ports/(?P<pk>\d+)/disconnect/$', views.consoleserverport_disconnect, name='consoleserverport_disconnect'),
     url(r'^console-server-ports/(?P<pk>\d+)/disconnect/$', views.consoleserverport_disconnect, name='consoleserverport_disconnect'),
-    url(r'^console-server-ports/(?P<pk>\d+)/edit/$', views.consoleserverport_edit, name='consoleserverport_edit'),
+    url(r'^console-server-ports/(?P<pk>\d+)/edit/$', views.ConsoleServerPortEditView.as_view(), name='consoleserverport_edit'),
     url(r'^console-server-ports/(?P<pk>\d+)/delete/$', views.consoleserverport_delete, name='consoleserverport_delete'),
     url(r'^console-server-ports/(?P<pk>\d+)/delete/$', views.consoleserverport_delete, name='consoleserverport_delete'),
 
 
     # Power ports
     # Power ports
@@ -126,7 +126,7 @@ urlpatterns = [
     url(r'^devices/(?P<pk>\d+)/power-ports/delete/$', views.PowerPortBulkDeleteView.as_view(), name='powerport_bulk_delete'),
     url(r'^devices/(?P<pk>\d+)/power-ports/delete/$', views.PowerPortBulkDeleteView.as_view(), name='powerport_bulk_delete'),
     url(r'^power-ports/(?P<pk>\d+)/connect/$', views.powerport_connect, name='powerport_connect'),
     url(r'^power-ports/(?P<pk>\d+)/connect/$', views.powerport_connect, name='powerport_connect'),
     url(r'^power-ports/(?P<pk>\d+)/disconnect/$', views.powerport_disconnect, name='powerport_disconnect'),
     url(r'^power-ports/(?P<pk>\d+)/disconnect/$', views.powerport_disconnect, name='powerport_disconnect'),
-    url(r'^power-ports/(?P<pk>\d+)/edit/$', views.powerport_edit, name='powerport_edit'),
+    url(r'^power-ports/(?P<pk>\d+)/edit/$', views.PowerPortEditView.as_view(), name='powerport_edit'),
     url(r'^power-ports/(?P<pk>\d+)/delete/$', views.powerport_delete, name='powerport_delete'),
     url(r'^power-ports/(?P<pk>\d+)/delete/$', views.powerport_delete, name='powerport_delete'),
 
 
     # Power outlets
     # Power outlets
@@ -134,13 +134,13 @@ urlpatterns = [
     url(r'^devices/(?P<pk>\d+)/power-outlets/delete/$', views.PowerOutletBulkDeleteView.as_view(), name='poweroutlet_bulk_delete'),
     url(r'^devices/(?P<pk>\d+)/power-outlets/delete/$', views.PowerOutletBulkDeleteView.as_view(), name='poweroutlet_bulk_delete'),
     url(r'^power-outlets/(?P<pk>\d+)/connect/$', views.poweroutlet_connect, name='poweroutlet_connect'),
     url(r'^power-outlets/(?P<pk>\d+)/connect/$', views.poweroutlet_connect, name='poweroutlet_connect'),
     url(r'^power-outlets/(?P<pk>\d+)/disconnect/$', views.poweroutlet_disconnect, name='poweroutlet_disconnect'),
     url(r'^power-outlets/(?P<pk>\d+)/disconnect/$', views.poweroutlet_disconnect, name='poweroutlet_disconnect'),
-    url(r'^power-outlets/(?P<pk>\d+)/edit/$', views.poweroutlet_edit, name='poweroutlet_edit'),
+    url(r'^power-outlets/(?P<pk>\d+)/edit/$', views.PowerOutletEditView.as_view(), name='poweroutlet_edit'),
     url(r'^power-outlets/(?P<pk>\d+)/delete/$', views.poweroutlet_delete, name='poweroutlet_delete'),
     url(r'^power-outlets/(?P<pk>\d+)/delete/$', views.poweroutlet_delete, name='poweroutlet_delete'),
 
 
     # Device bays
     # Device bays
     url(r'^devices/(?P<pk>\d+)/bays/add/$', views.devicebay_add, name='devicebay_add'),
     url(r'^devices/(?P<pk>\d+)/bays/add/$', views.devicebay_add, name='devicebay_add'),
     url(r'^devices/(?P<pk>\d+)/bays/delete/$', views.DeviceBayBulkDeleteView.as_view(), name='devicebay_bulk_delete'),
     url(r'^devices/(?P<pk>\d+)/bays/delete/$', views.DeviceBayBulkDeleteView.as_view(), name='devicebay_bulk_delete'),
-    url(r'^device-bays/(?P<pk>\d+)/edit/$', views.devicebay_edit, name='devicebay_edit'),
+    url(r'^device-bays/(?P<pk>\d+)/edit/$', views.DeviceBayEditView.as_view(), name='devicebay_edit'),
     url(r'^device-bays/(?P<pk>\d+)/delete/$', views.devicebay_delete, name='devicebay_delete'),
     url(r'^device-bays/(?P<pk>\d+)/delete/$', views.devicebay_delete, name='devicebay_delete'),
     url(r'^device-bays/(?P<pk>\d+)/populate/$', views.devicebay_populate, name='devicebay_populate'),
     url(r'^device-bays/(?P<pk>\d+)/populate/$', views.devicebay_populate, name='devicebay_populate'),
     url(r'^device-bays/(?P<pk>\d+)/depopulate/$', views.devicebay_depopulate, name='devicebay_depopulate'),
     url(r'^device-bays/(?P<pk>\d+)/depopulate/$', views.devicebay_depopulate, name='devicebay_depopulate'),
@@ -160,12 +160,12 @@ urlpatterns = [
     url(r'^devices/(?P<pk>\d+)/interfaces/delete/$', views.InterfaceBulkDeleteView.as_view(), name='interface_bulk_delete'),
     url(r'^devices/(?P<pk>\d+)/interfaces/delete/$', views.InterfaceBulkDeleteView.as_view(), name='interface_bulk_delete'),
     url(r'^devices/(?P<pk>\d+)/interface-connections/add/$', views.interfaceconnection_add, name='interfaceconnection_add'),
     url(r'^devices/(?P<pk>\d+)/interface-connections/add/$', views.interfaceconnection_add, name='interfaceconnection_add'),
     url(r'^interface-connections/(?P<pk>\d+)/delete/$', views.interfaceconnection_delete, name='interfaceconnection_delete'),
     url(r'^interface-connections/(?P<pk>\d+)/delete/$', views.interfaceconnection_delete, name='interfaceconnection_delete'),
-    url(r'^interfaces/(?P<pk>\d+)/edit/$', views.interface_edit, name='interface_edit'),
+    url(r'^interfaces/(?P<pk>\d+)/edit/$', views.InterfaceEditView.as_view(), name='interface_edit'),
     url(r'^interfaces/(?P<pk>\d+)/delete/$', views.interface_delete, name='interface_delete'),
     url(r'^interfaces/(?P<pk>\d+)/delete/$', views.interface_delete, name='interface_delete'),
 
 
     # Modules
     # Modules
     url(r'^devices/(?P<pk>\d+)/modules/add/$', views.module_add, name='module_add'),
     url(r'^devices/(?P<pk>\d+)/modules/add/$', views.module_add, name='module_add'),
-    url(r'^modules/(?P<pk>\d+)/edit/$', views.module_edit, name='module_edit'),
+    url(r'^modules/(?P<pk>\d+)/edit/$', views.ModuleEditView.as_view(), name='module_edit'),
     url(r'^modules/(?P<pk>\d+)/delete/$', views.module_delete, name='module_delete'),
     url(r'^modules/(?P<pk>\d+)/delete/$', views.module_delete, name='module_delete'),
 
 
 ]
 ]

+ 43 - 148
netbox/dcim/views.py

@@ -722,8 +722,9 @@ def consoleport_add(request, pk):
     else:
     else:
         form = forms.ConsolePortCreateForm()
         form = forms.ConsolePortCreateForm()
 
 
-    return render(request, 'dcim/consoleport_edit.html', {
+    return render(request, 'dcim/device_component_add.html', {
         'device': device,
         'device': device,
+        'component_type': 'Console Port',
         'form': form,
         'form': form,
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
     })
     })
@@ -788,26 +789,10 @@ def consoleport_disconnect(request, pk):
     })
     })
 
 
 
 
-@permission_required('dcim.change_consoleport')
-def consoleport_edit(request, pk):
-
-    consoleport = get_object_or_404(ConsolePort, pk=pk)
-
-    if request.method == 'POST':
-        form = forms.ConsolePortForm(request.POST, instance=consoleport)
-        if form.is_valid():
-            consoleport = form.save()
-            messages.success(request, "Modified {0} {1}".format(consoleport.device.name, consoleport.name))
-            return redirect('dcim:device', pk=consoleport.device.pk)
-
-    else:
-        form = forms.ConsolePortForm(instance=consoleport)
-
-    return render(request, 'dcim/consoleport_edit.html', {
-        'consoleport': consoleport,
-        'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': consoleport.device.pk}),
-    })
+class ConsolePortEditView(PermissionRequiredMixin, ObjectEditView):
+    permission_required = 'dcim.change_consoleport'
+    model = ConsolePort
+    form_class = forms.ConsolePortForm
 
 
 
 
 @permission_required('dcim.delete_consoleport')
 @permission_required('dcim.delete_consoleport')
@@ -882,8 +867,9 @@ def consoleserverport_add(request, pk):
     else:
     else:
         form = forms.ConsoleServerPortCreateForm()
         form = forms.ConsoleServerPortCreateForm()
 
 
-    return render(request, 'dcim/consoleserverport_edit.html', {
+    return render(request, 'dcim/device_component_add.html', {
         'device': device,
         'device': device,
+        'component_type': 'Console Server Port',
         'form': form,
         'form': form,
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
     })
     })
@@ -949,26 +935,10 @@ def consoleserverport_disconnect(request, pk):
     })
     })
 
 
 
 
-@permission_required('dcim.change_consoleserverport')
-def consoleserverport_edit(request, pk):
-
-    consoleserverport = get_object_or_404(ConsoleServerPort, pk=pk)
-
-    if request.method == 'POST':
-        form = forms.ConsoleServerPortForm(request.POST, instance=consoleserverport)
-        if form.is_valid():
-            consoleserverport = form.save()
-            messages.success(request, "Modified {0} {1}".format(consoleserverport.device.name, consoleserverport.name))
-            return redirect('dcim:device', pk=consoleserverport.device.pk)
-
-    else:
-        form = forms.ConsoleServerPortForm(instance=consoleserverport)
-
-    return render(request, 'dcim/consoleserverport_edit.html', {
-        'consoleserverport': consoleserverport,
-        'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': consoleserverport.device.pk}),
-    })
+class ConsoleServerPortEditView(PermissionRequiredMixin, ObjectEditView):
+    permission_required = 'dcim.change_consoleserverport'
+    model = ConsoleServerPort
+    form_class = forms.ConsoleServerPortForm
 
 
 
 
 @permission_required('dcim.delete_consoleserverport')
 @permission_required('dcim.delete_consoleserverport')
@@ -1035,8 +1005,9 @@ def powerport_add(request, pk):
     else:
     else:
         form = forms.PowerPortCreateForm()
         form = forms.PowerPortCreateForm()
 
 
-    return render(request, 'dcim/powerport_edit.html', {
+    return render(request, 'dcim/device_component_add.html', {
         'device': device,
         'device': device,
+        'component_type': 'Power Port',
         'form': form,
         'form': form,
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
     })
     })
@@ -1101,26 +1072,10 @@ def powerport_disconnect(request, pk):
     })
     })
 
 
 
 
-@permission_required('dcim.change_powerport')
-def powerport_edit(request, pk):
-
-    powerport = get_object_or_404(PowerPort, pk=pk)
-
-    if request.method == 'POST':
-        form = forms.PowerPortForm(request.POST, instance=powerport)
-        if form.is_valid():
-            powerport = form.save()
-            messages.success(request, "Modified {0} power port {1}".format(powerport.device.name, powerport.name))
-            return redirect('dcim:device', pk=powerport.device.pk)
-
-    else:
-        form = forms.PowerPortForm(instance=powerport)
-
-    return render(request, 'dcim/powerport_edit.html', {
-        'powerport': powerport,
-        'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': powerport.device.pk}),
-    })
+class PowerPortEditView(PermissionRequiredMixin, ObjectEditView):
+    permission_required = 'dcim.change_powerport'
+    model = PowerPort
+    form_class = forms.PowerPortForm
 
 
 
 
 @permission_required('dcim.delete_powerport')
 @permission_required('dcim.delete_powerport')
@@ -1193,8 +1148,9 @@ def poweroutlet_add(request, pk):
     else:
     else:
         form = forms.PowerOutletCreateForm()
         form = forms.PowerOutletCreateForm()
 
 
-    return render(request, 'dcim/poweroutlet_edit.html', {
+    return render(request, 'dcim/device_component_add.html', {
         'device': device,
         'device': device,
+        'component_type': 'Power Outlet',
         'form': form,
         'form': form,
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
     })
     })
@@ -1259,26 +1215,10 @@ def poweroutlet_disconnect(request, pk):
     })
     })
 
 
 
 
-@permission_required('dcim.change_poweroutlet')
-def poweroutlet_edit(request, pk):
-
-    poweroutlet = get_object_or_404(PowerOutlet, pk=pk)
-
-    if request.method == 'POST':
-        form = forms.PowerOutletForm(request.POST, instance=poweroutlet)
-        if form.is_valid():
-            poweroutlet = form.save()
-            messages.success(request, "Modified {0} power outlet {1}".format(poweroutlet.device.name, poweroutlet.name))
-            return redirect('dcim:device', pk=poweroutlet.device.pk)
-
-    else:
-        form = forms.PowerOutletForm(instance=poweroutlet)
-
-    return render(request, 'dcim/poweroutlet_edit.html', {
-        'poweroutlet': poweroutlet,
-        'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': poweroutlet.device.pk}),
-    })
+class PowerOutletEditView(PermissionRequiredMixin, ObjectEditView):
+    permission_required = 'dcim.change_poweroutlet'
+    model = PowerOutlet
+    form_class = forms.PowerOutletForm
 
 
 
 
 @permission_required('dcim.delete_poweroutlet')
 @permission_required('dcim.delete_poweroutlet')
@@ -1347,35 +1287,20 @@ def interface_add(request, pk):
                     return redirect('dcim:device', pk=device.pk)
                     return redirect('dcim:device', pk=device.pk)
 
 
     else:
     else:
-        form = forms.InterfaceCreateForm()
+        form = forms.InterfaceCreateForm(initial={'mgmt_only': request.GET.get('mgmt_only')})
 
 
-    return render(request, 'dcim/interface_edit.html', {
+    return render(request, 'dcim/device_component_add.html', {
         'device': device,
         'device': device,
+        'component_type': 'Interface',
         'form': form,
         'form': form,
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
     })
     })
 
 
 
 
-@permission_required('dcim.change_interface')
-def interface_edit(request, pk):
-
-    interface = get_object_or_404(Interface, pk=pk)
-
-    if request.method == 'POST':
-        form = forms.InterfaceForm(request.POST, instance=interface)
-        if form.is_valid():
-            interface = form.save()
-            messages.success(request, "Modified {0} interface {1}".format(interface.device.name, interface.name))
-            return redirect('dcim:device', pk=interface.device.pk)
-
-    else:
-        form = forms.InterfaceForm(instance=interface)
-
-    return render(request, 'dcim/interface_edit.html', {
-        'interface': interface,
-        'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': interface.device.pk}),
-    })
+class InterfaceEditView(PermissionRequiredMixin, ObjectEditView):
+    permission_required = 'dcim.change_interface'
+    model = Interface
+    form_class = forms.InterfaceForm
 
 
 
 
 @permission_required('dcim.delete_interface')
 @permission_required('dcim.delete_interface')
@@ -1483,33 +1408,18 @@ def devicebay_add(request, pk):
     else:
     else:
         form = forms.DeviceBayCreateForm()
         form = forms.DeviceBayCreateForm()
 
 
-    return render(request, 'dcim/devicebay_edit.html', {
+    return render(request, 'dcim/device_component_add.html', {
         'device': device,
         'device': device,
+        'component_type': 'Device Bay',
         'form': form,
         'form': form,
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
         'cancel_url': reverse('dcim:device', kwargs={'pk': device.pk}),
     })
     })
 
 
 
 
-@permission_required('dcim.change_devicebay')
-def devicebay_edit(request, pk):
-
-    devicebay = get_object_or_404(DeviceBay, pk=pk)
-
-    if request.method == 'POST':
-        form = forms.DeviceBayForm(request.POST, instance=devicebay)
-        if form.is_valid():
-            devicebay = form.save()
-            messages.success(request, "Modified {} bay {}".format(devicebay.device.name, devicebay.name))
-            return redirect('dcim:device', pk=devicebay.device.pk)
-
-    else:
-        form = forms.DeviceBayForm(instance=devicebay)
-
-    return render(request, 'dcim/devicebay_edit.html', {
-        'devicebay': devicebay,
-        'form': form,
-        'cancel_url': reverse('dcim:device', kwargs={'pk': devicebay.device.pk}),
-    })
+class DeviceBayEditView(PermissionRequiredMixin, ObjectEditView):
+    permission_required = 'dcim.change_devicebay'
+    model = DeviceBay
+    form_class = forms.DeviceBayForm
 
 
 
 
 @permission_required('dcim.delete_devicebay')
 @permission_required('dcim.delete_devicebay')
@@ -1775,33 +1685,18 @@ def module_add(request, pk):
     else:
     else:
         form = forms.ModuleForm()
         form = forms.ModuleForm()
 
 
-    return render(request, 'dcim/module_edit.html', {
+    return render(request, 'dcim/device_component_add.html', {
         'device': device,
         'device': device,
+        'component_type': 'Module',
         'form': form,
         'form': form,
         'cancel_url': reverse('dcim:device_inventory', kwargs={'pk': device.pk}),
         'cancel_url': reverse('dcim:device_inventory', kwargs={'pk': device.pk}),
     })
     })
 
 
 
 
-@permission_required('dcim.change_module')
-def module_edit(request, pk):
-
-    module = get_object_or_404(Module, pk=pk)
-
-    if request.method == 'POST':
-        form = forms.ModuleForm(request.POST, instance=module)
-        if form.is_valid():
-            module = form.save()
-            messages.success(request, "Modified {} module {}".format(module.device.name, module.name))
-            return redirect('dcim:device_inventory', pk=module.device.pk)
-
-    else:
-        form = forms.ModuleForm(instance=module)
-
-    return render(request, 'dcim/module_edit.html', {
-        'module': module,
-        'form': form,
-        'cancel_url': reverse('dcim:device_inventory', kwargs={'pk': module.device.pk}),
-    })
+class ModuleEditView(PermissionRequiredMixin, ObjectEditView):
+    permission_required = 'dcim.change_module'
+    model = Module
+    form_class = forms.ModuleForm
 
 
 
 
 @permission_required('dcim.delete_module')
 @permission_required('dcim.delete_module')

+ 0 - 51
netbox/templates/dcim/consoleport_edit.html

@@ -1,51 +0,0 @@
-{% extends '_base.html' %}
-{% load form_helpers %}
-
-{% block title %}{% if consoleport.pk %}Editing {{ consoleport.device }} {{ consoleport }}{% else %}Add a Console Port ({{ device }}){% endif %}{% endblock %}
-
-{% block content %}
-<form action="." method="post" class="form form-horizontal">
-    {% csrf_token %}
-    <div class="row">
-        <div class="col-md-6 col-md-offset-3">
-            {% if form.non_field_errors %}
-                <div class="panel panel-danger">
-                    <div class="panel-heading"><strong>Errors</strong></div>
-                    <div class="panel-body">
-                        {{ form.non_field_errors }}
-                    </div>
-                </div>
-            {% endif %}
-            <div class="panel panel-default">
-                <div class="panel-heading">
-                    {% if consoleport.pk %}
-                        <strong>Editing {{ consoleport }}</strong>
-                    {% else %}
-                        <strong>Add a Console Port</strong>
-                    {% endif %}
-                </div>
-                <div class="panel-body">
-                    <div class="form-group">
-                        <label class="col-md-3 control-label required">Device</label>
-                        <div class="col-md-9">
-                            <p class="form-control-static">{% if consoleport %}{{ consoleport.device }}{% else %}{{ device }}{% endif %}</p>
-                        </div>
-                    </div>
-                    {% render_form form %}
-                </div>
-            </div>
-		    <div class="form-group">
-                <div class="col-md-9 col-md-offset-3">
-                    {% if consoleport.pk %}
-                        <button type="submit" name="_update" class="btn btn-primary">Save</button>
-                    {% else %}
-                        <button type="submit" name="_create" class="btn btn-primary">Create</button>
-                        <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
-                    {% endif %}
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
-                </div>
-		    </div>
-        </div>
-    </div>
-</form>
-{% endblock %}

+ 0 - 51
netbox/templates/dcim/consoleserverport_edit.html

@@ -1,51 +0,0 @@
-{% extends '_base.html' %}
-{% load form_helpers %}
-
-{% block title %}{% if consoleserverport.pk %}Editing {{ consoleserverport.device }} {{ consoleserverport }}{% else %}Add a Console Server Port ({{ device }}){% endif %}{% endblock %}
-
-{% block content %}
-<form action="." method="post" class="form form-horizontal">
-    {% csrf_token %}
-    <div class="row">
-        <div class="col-md-6 col-md-offset-3">
-            {% if form.non_field_errors %}
-                <div class="panel panel-danger">
-                    <div class="panel-heading"><strong>Errors</strong></div>
-                    <div class="panel-body">
-                        {{ form.non_field_errors }}
-                    </div>
-                </div>
-            {% endif %}
-            <div class="panel panel-default">
-                <div class="panel-heading">
-                    {% if consoleserverport.pk %}
-                        <strong>Editing {{ consoleserverport }}</strong>
-                    {% else %}
-                        <strong>Add a Console Server Port</strong>
-                    {% endif %}
-                </div>
-                <div class="panel-body">
-                    <div class="form-group">
-                        <label class="col-md-3 control-label required">Device</label>
-                        <div class="col-md-9">
-                            <p class="form-control-static">{% if consoleserverport %}{{ consoleserverport.device }}{% else %}{{ device }}{% endif %}</p>
-                        </div>
-                    </div>
-                    {% render_form form %}
-                </div>
-            </div>
-		    <div class="form-group">
-                <div class="col-md-9 col-md-offset-3">
-                    {% if consoleserverport.pk %}
-                        <button type="submit" name="_update" class="btn btn-primary">Save</button>
-                    {% else %}
-                        <button type="submit" name="_create" class="btn btn-primary">Create</button>
-                        <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
-                    {% endif %}
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
-                </div>
-		    </div>
-        </div>
-    </div>
-</form>
-{% endblock %}

+ 5 - 9
netbox/templates/dcim/module_edit.html

@@ -1,7 +1,7 @@
 {% extends '_base.html' %}
 {% extends '_base.html' %}
 {% load form_helpers %}
 {% load form_helpers %}
 
 
-{% block title %}{% if module %}Editing {{ module.device }} {{ module }}{% else %}Add a Module to {{ device }}{% endif %}{% endblock %}
+{% block title %}Create {{ component_type }} ({{ device }}){% endblock %}
 
 
 {% block content %}
 {% block content %}
 <form action="." method="post" class="form form-horizontal">
 <form action="." method="post" class="form form-horizontal">
@@ -18,13 +18,13 @@
             {% endif %}
             {% endif %}
             <div class="panel panel-default">
             <div class="panel panel-default">
                 <div class="panel-heading">
                 <div class="panel-heading">
-                    <strong>{% if module %}Editing {{ module.device }} {{ module }}{% else %}Add a Module to {{ device }}{% endif %}</strong>
+                    <strong>{{ component_type }}</strong>
                 </div>
                 </div>
                 <div class="panel-body">
                 <div class="panel-body">
                     <div class="form-group">
                     <div class="form-group">
                         <label class="col-md-3 control-label required">Device</label>
                         <label class="col-md-3 control-label required">Device</label>
                         <div class="col-md-9">
                         <div class="col-md-9">
-                            <p class="form-control-static">{% if module %}{{ module.device }}{% else %}{{ device }}{% endif %}</p>
+                            <p class="form-control-static">{{ device }}</p>
                         </div>
                         </div>
                     </div>
                     </div>
                     {% render_form form %}
                     {% render_form form %}
@@ -32,12 +32,8 @@
             </div>
             </div>
 		    <div class="form-group">
 		    <div class="form-group">
                 <div class="col-md-9 col-md-offset-3">
                 <div class="col-md-9 col-md-offset-3">
-                    {% if module.pk %}
-                        <button type="submit" name="_update" class="btn btn-primary">Save</button>
-                    {% else %}
-                        <button type="submit" name="_create" class="btn btn-primary">Create</button>
-                        <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
-                    {% endif %}
+                    <button type="submit" name="_create" class="btn btn-primary">Create</button>
+                    <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
                     <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
                     <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
                 </div>
                 </div>
 		    </div>
 		    </div>

+ 0 - 51
netbox/templates/dcim/devicebay_edit.html

@@ -1,51 +0,0 @@
-{% extends '_base.html' %}
-{% load form_helpers %}
-
-{% block title %}{% if devicebay.pk %}Editing {{ devicebay.device }} {{ devicebay }}{% else %}Add a Device Bay ({{ device }}){% endif %}{% endblock %}
-
-{% block content %}
-<form action="." method="post" class="form form-horizontal">
-    {% csrf_token %}
-    <div class="row">
-        <div class="col-md-6 col-md-offset-3">
-            {% if form.non_field_errors %}
-                <div class="panel panel-danger">
-                    <div class="panel-heading"><strong>Errors</strong></div>
-                    <div class="panel-body">
-                        {{ form.non_field_errors }}
-                    </div>
-                </div>
-            {% endif %}
-            <div class="panel panel-default">
-                <div class="panel-heading">
-                    {% if poweroutlet.pk %}
-                        <strong>Editing {{ devicebay }}</strong>
-                    {% else %}
-                        <strong>Add a Device Bay</strong>
-                    {% endif %}
-                </div>
-                <div class="panel-body">
-                    <div class="form-group">
-                        <label class="col-md-3 control-label required">Device</label>
-                        <div class="col-md-9">
-                            <p class="form-control-static">{% if devicebay %}{{ devicebay.device }}{% else %}{{ device }}{% endif %}</p>
-                        </div>
-                    </div>
-                    {% render_form form %}
-                </div>
-            </div>
-		    <div class="form-group">
-                <div class="col-md-9 col-md-offset-3">
-                    {% if devicebay.pk %}
-                        <button type="submit" name="_update" class="btn btn-primary">Save</button>
-                    {% else %}
-                        <button type="submit" name="_create" class="btn btn-primary">Create</button>
-                        <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
-                    {% endif %}
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
-                </div>
-		    </div>
-        </div>
-    </div>
-</form>
-{% endblock %}

+ 0 - 51
netbox/templates/dcim/interface_edit.html

@@ -1,51 +0,0 @@
-{% extends '_base.html' %}
-{% load form_helpers %}
-
-{% block title %}{% if interface.pk %}Editing {{ interface.device }} {{ interface }}{% else %}Add an Interface ({{ device }}){% endif %}{% endblock %}
-
-{% block content %}
-<form action="." method="post" class="form form-horizontal">
-    {% csrf_token %}
-    <div class="row">
-        <div class="col-md-6 col-md-offset-3">
-            {% if form.non_field_errors %}
-                <div class="panel panel-danger">
-                    <div class="panel-heading"><strong>Errors</strong></div>
-                    <div class="panel-body">
-                        {{ form.non_field_errors }}
-                    </div>
-                </div>
-            {% endif %}
-            <div class="panel panel-default">
-                <div class="panel-heading">
-                    {% if interface.pk %}
-                        <strong>Editing {{ interface }}</strong>
-                    {% else %}
-                        <strong>Add an Interface</strong>
-                    {% endif %}
-                </div>
-                <div class="panel-body">
-                    <div class="form-group">
-                        <label class="col-md-3 control-label required">Device</label>
-                        <div class="col-md-9">
-                            <p class="form-control-static">{% if interface %}{{ interface.device }}{% else %}{{ device }}{% endif %}</p>
-                        </div>
-                    </div>
-                    {% render_form form %}
-                </div>
-            </div>
-		    <div class="form-group">
-                <div class="col-md-9 col-md-offset-3">
-                    {% if interface.pk %}
-                        <button type="submit" name="_update" class="btn btn-primary">Save</button>
-                    {% else %}
-                        <button type="submit" name="_create" class="btn btn-primary">Create</button>
-                        <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
-                    {% endif %}
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
-                </div>
-		    </div>
-        </div>
-    </div>
-</form>
-{% endblock %}

+ 0 - 51
netbox/templates/dcim/poweroutlet_edit.html

@@ -1,51 +0,0 @@
-{% extends '_base.html' %}
-{% load form_helpers %}
-
-{% block title %}{% if poweroutlet.pk %}Editing {{ poweroutlet.device }} {{ poweroutlet }}{% else %}Add a Power Outlet ({{ device }}){% endif %}{% endblock %}
-
-{% block content %}
-<form action="." method="post" class="form form-horizontal">
-    {% csrf_token %}
-    <div class="row">
-        <div class="col-md-6 col-md-offset-3">
-            {% if form.non_field_errors %}
-                <div class="panel panel-danger">
-                    <div class="panel-heading"><strong>Errors</strong></div>
-                    <div class="panel-body">
-                        {{ form.non_field_errors }}
-                    </div>
-                </div>
-            {% endif %}
-            <div class="panel panel-default">
-                <div class="panel-heading">
-                    {% if poweroutlet.pk %}
-                        <strong>Editing {{ poweroutlet }}</strong>
-                    {% else %}
-                        <strong>Add a Power Outlet</strong>
-                    {% endif %}
-                </div>
-                <div class="panel-body">
-                    <div class="form-group">
-                        <label class="col-md-3 control-label required">Device</label>
-                        <div class="col-md-9">
-                            <p class="form-control-static">{% if poweroutlet %}{{ poweroutlet.device }}{% else %}{{ device }}{% endif %}</p>
-                        </div>
-                    </div>
-                    {% render_form form %}
-                </div>
-            </div>
-		    <div class="form-group">
-                <div class="col-md-9 col-md-offset-3">
-                    {% if poweroutlet.pk %}
-                        <button type="submit" name="_update" class="btn btn-primary">Save</button>
-                    {% else %}
-                        <button type="submit" name="_create" class="btn btn-primary">Create</button>
-                        <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
-                    {% endif %}
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
-                </div>
-		    </div>
-        </div>
-    </div>
-</form>
-{% endblock %}

+ 0 - 51
netbox/templates/dcim/powerport_edit.html

@@ -1,51 +0,0 @@
-{% extends '_base.html' %}
-{% load form_helpers %}
-
-{% block title %}{% if powerport.pk %}Editing {{ powerport.device }} {{ powerport }}{% else %}Add a Power Port ({{ device }}){% endif %}{% endblock %}
-
-{% block content %}
-<form action="." method="post" class="form form-horizontal">
-    {% csrf_token %}
-    <div class="row">
-        <div class="col-md-6 col-md-offset-3">
-            {% if form.non_field_errors %}
-                <div class="panel panel-danger">
-                    <div class="panel-heading"><strong>Errors</strong></div>
-                    <div class="panel-body">
-                        {{ form.non_field_errors }}
-                    </div>
-                </div>
-            {% endif %}
-            <div class="panel panel-default">
-                <div class="panel-heading">
-                    {% if powerport.pk %}
-                        <strong>Editing {{ powerport }}</strong>
-                    {% else %}
-                        <strong>Add a Power Port</strong>
-                    {% endif %}
-                </div>
-                <div class="panel-body">
-                    <div class="form-group">
-                        <label class="col-md-3 control-label required">Device</label>
-                        <div class="col-md-9">
-                            <p class="form-control-static">{% if powerport %}{{ powerport.device }}{% else %}{{ device }}{% endif %}</p>
-                        </div>
-                    </div>
-                    {% render_form form %}
-                </div>
-            </div>
-		    <div class="form-group">
-                <div class="col-md-9 col-md-offset-3">
-                    {% if powerport.pk %}
-                        <button type="submit" name="_update" class="btn btn-primary">Save</button>
-                    {% else %}
-                        <button type="submit" name="_create" class="btn btn-primary">Create</button>
-                        <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
-                    {% endif %}
-                    <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
-                </div>
-		    </div>
-        </div>
-    </div>
-</form>
-{% endblock %}