From 81a9e05b62b2c659e0c9a4734356efbf698b4a0f Mon Sep 17 00:00:00 2001 From: Iva Kaneva Date: Sat, 1 Oct 2016 20:48:13 +0300 Subject: [PATCH] Add "Edit" and "Delete" Service port functionality --- netbox/ipam/urls.py | 4 +- netbox/ipam/views.py | 29 ++++++++ netbox/templates/dcim/inc/_port.html | 12 ++++ netbox/templates/ipam/serviceport.html | 76 +++++++++++++++++++++ netbox/templates/ipam/serviceport_edit.html | 40 +++++++++++ 5 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 netbox/templates/ipam/serviceport.html create mode 100644 netbox/templates/ipam/serviceport_edit.html diff --git a/netbox/ipam/urls.py b/netbox/ipam/urls.py index 50aa6beb2..3490f75ba 100644 --- a/netbox/ipam/urls.py +++ b/netbox/ipam/urls.py @@ -62,7 +62,9 @@ urlpatterns = [ # Service Ports url(r'^service-ports/(?P\d+)/$', views.serviceport, name='serviceport'), - + url(r'^service-ports/(?P\d+)/edit/$', views.ServicePortEditView.as_view(), name='serviceport_edit'), + url(r'^service-ports/(?P\d+)/delete/$', views.ServicePortDeleteView.as_view(), name='serviceport_delete'), + # VLAN groups url(r'^vlan-groups/$', views.VLANGroupListView.as_view(), name='vlangroup_list'), url(r'^vlan-groups/add/$', views.VLANGroupEditView.as_view(), name='vlangroup_add'), diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 9e399cc66..adf7827bd 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -657,6 +657,35 @@ def serviceport(request, pk): 'service_port': service_port, }) + +class ServicePortEditView(PermissionRequiredMixin, ObjectEditView): + permission_required = 'ipam.change_ipaddress' + model = ServicePort + form_class = forms.ServicePortForm + fields_initial = ['ip_address', 'port' 'type', 'name', 'description'] + template_name = 'ipam/serviceport_edit.html' + + def post(self, request, *args, **kwargs): + service_port = self.get_object(kwargs) + device_url = reverse('dcim:device', kwargs={'pk': service_port.ip_address.device.pk}) + self.success_url = device_url + self.cancel_url = device_url + + return super(ServicePortEditView, self).post(request, *args, **kwargs) + + +class ServicePortDeleteView(PermissionRequiredMixin, ObjectDeleteView): + permission_required = 'ipam.delete_ipaddress' + model = ServicePort + + def post(self, request, *args, **kwargs): + service_port = self.get_object(kwargs) + self.redirect_url = reverse('dcim:device', kwargs={'pk': service_port.ip_address.device.pk}) + + return super(ServicePortDeleteView, self).post(request, *args, **kwargs) + + +# # VLAN groups # diff --git a/netbox/templates/dcim/inc/_port.html b/netbox/templates/dcim/inc/_port.html index 8e1b9b0d4..e54720eaa 100644 --- a/netbox/templates/dcim/inc/_port.html +++ b/netbox/templates/dcim/inc/_port.html @@ -14,4 +14,16 @@ {% endif %} {% endif %} + + {% if perms.ipam.change_ipaddress %} + + + + {% endif %} + {% if perms.ipam.delete_ipaddress %} + + + + {% endif %} + diff --git a/netbox/templates/ipam/serviceport.html b/netbox/templates/ipam/serviceport.html new file mode 100644 index 000000000..ad4853050 --- /dev/null +++ b/netbox/templates/ipam/serviceport.html @@ -0,0 +1,76 @@ +{% extends '_base.html' %} +{% load render_table from django_tables2 %} + +{% block title %}{{ ipaddress }}{% endblock %} + +{% block content %} +
+
+ +
+
+
+ {% if perms.ipam.change_ipaddress %} + + + Edit this Service Port + + {% endif %} + {% if perms.ipam.delete_ipaddress %} + + + Delete this Service Port + + {% endif %} +
+

{{ service_port }}

+
+
+
+
+ Service Port +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Device + + + {{ service_port.ip_address.device }} ({{ service_port.ip_address.interface }}) + +
IP Address{{ service_port.ip_address }}
Name{{ service_port.name }}
Description + {% if service_port.description %} + {{ service_port.description }} + {% else %} + N/A + {% endif %} +
Created{{ service_port.created }}
Last Updated{{ service_port.last_updated }}
+
+
+
+{% endblock %} diff --git a/netbox/templates/ipam/serviceport_edit.html b/netbox/templates/ipam/serviceport_edit.html new file mode 100644 index 000000000..6a2094536 --- /dev/null +++ b/netbox/templates/ipam/serviceport_edit.html @@ -0,0 +1,40 @@ +{% extends 'utilities/obj_edit.html' %} +{% load static from staticfiles %} +{% load form_helpers %} + +{% block form %} +
+
Service Port
+
+ {% render_field form.ip_address %} + {% render_field form.port %} + {% render_field form.type %} + {% render_field form.name %} + {% if obj %} +
+ +
+

+ {% if obj.ip_address.device %} + {{ obj.ip_address.device }} + {% else %} + None + {% endif %} +

+
+
+
+ +
+

{{ obj.ip_address.interface }}

+
+
+ {% endif %} + {% render_field form.description %} +
+
+{% endblock %} + +{% block javascript %} + +{% endblock %}