mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-28 11:26:26 -06:00
Move ServicePort related urls and views from ipam
to dcim
This commit is contained in:
parent
3cc54a1886
commit
2cd5e49e91
@ -1298,6 +1298,24 @@ class ServicePortCreateForm(forms.ModelForm, BootstrapMixin):
|
|||||||
self.fields['ip_address'].queryset = IPAddress.objects.filter(interface__device=device)
|
self.fields['ip_address'].queryset = IPAddress.objects.filter(interface__device=device)
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceEditForm(forms.ModelForm, BootstrapMixin):
|
||||||
|
class Meta:
|
||||||
|
model = ServicePort
|
||||||
|
fields = ['ip_address', 'protocol', 'port', 'name', 'description']
|
||||||
|
help_texts = {
|
||||||
|
'port': '0-65535',
|
||||||
|
'name': 'Service running on this port',
|
||||||
|
'description': 'Service description'
|
||||||
|
}
|
||||||
|
labels = {
|
||||||
|
'ip_address': "IP Address",
|
||||||
|
}
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(ServiceEditForm, self).__init__(*args, **kwargs)
|
||||||
|
self.fields['ip_address'].queryset = IPAddress.objects.filter(interface__device=kwargs['instance'].device)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Modules
|
# Modules
|
||||||
#
|
#
|
||||||
|
@ -169,4 +169,9 @@ urlpatterns = [
|
|||||||
url(r'^modules/(?P<pk>\d+)/edit/$', views.ModuleEditView.as_view(), 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.ModuleDeleteView.as_view(), name='module_delete'),
|
url(r'^modules/(?P<pk>\d+)/delete/$', views.ModuleDeleteView.as_view(), name='module_delete'),
|
||||||
|
|
||||||
|
# ServicePorts
|
||||||
|
url(r'^service-ports/(?P<pk>\d+)/$', views.serviceport, name='serviceport'),
|
||||||
|
url(r'^service-ports/(?P<pk>\d+)/edit/$', views.ServicePortEditView.as_view(), name='serviceport_edit'),
|
||||||
|
url(r'^service-ports/(?P<pk>\d+)/delete/$', views.ServicePortDeleteView.as_view(), name='serviceport_delete'),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
@ -1601,6 +1601,45 @@ def ipaddress_assign(request, pk):
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Service Ports
|
||||||
|
#
|
||||||
|
|
||||||
|
def serviceport(request, pk):
|
||||||
|
service_port = get_object_or_404(ServicePort.objects.select_related('device'), pk=pk)
|
||||||
|
|
||||||
|
return render(request, 'ipam/serviceport.html', {
|
||||||
|
'service_port': service_port,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
class ServicePortEditView(PermissionRequiredMixin, ObjectEditView):
|
||||||
|
permission_required = 'ipam.change_ipaddress'
|
||||||
|
model = ServicePort
|
||||||
|
form_class = forms.ServiceEditForm
|
||||||
|
fields_initial = ['ip_address', 'port' 'protocol', '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.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.device.pk})
|
||||||
|
|
||||||
|
return super(ServicePortDeleteView, self).post(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
@permission_required('ipam.add_ipaddress')
|
@permission_required('ipam.add_ipaddress')
|
||||||
def serviceport_assign(request, pk):
|
def serviceport_assign(request, pk):
|
||||||
device = get_object_or_404(Device, pk=pk)
|
device = get_object_or_404(Device, pk=pk)
|
||||||
@ -1610,7 +1649,7 @@ def serviceport_assign(request, pk):
|
|||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
serv_form = forms.ServicePortForm({
|
serv_form = forms.ServicePortForm({
|
||||||
'device': device.pk,
|
'device': device.pk,
|
||||||
'ip_address': form.cleaned_data['ip_address'].pk,
|
'ip_address': form.cleaned_data['ip_address'].pk if form.cleaned_data['ip_address'] else None,
|
||||||
'protocol': form.cleaned_data['protocol'],
|
'protocol': form.cleaned_data['protocol'],
|
||||||
'port': form.cleaned_data['port'],
|
'port': form.cleaned_data['port'],
|
||||||
'name': form.cleaned_data['name'],
|
'name': form.cleaned_data['name'],
|
||||||
|
@ -10,7 +10,7 @@ from utilities.forms import (
|
|||||||
|
|
||||||
from .models import (
|
from .models import (
|
||||||
Aggregate, IPAddress, IPADDRESS_STATUS_CHOICES, Prefix, PREFIX_STATUS_CHOICES, RIR, Role, VLAN, VLANGroup,
|
Aggregate, IPAddress, IPADDRESS_STATUS_CHOICES, Prefix, PREFIX_STATUS_CHOICES, RIR, Role, VLAN, VLANGroup,
|
||||||
VLAN_STATUS_CHOICES, VRF, ServicePort
|
VLAN_STATUS_CHOICES, VRF
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -444,29 +444,6 @@ class IPAddressFilterForm(BootstrapMixin, CustomFieldFilterForm):
|
|||||||
status = forms.MultipleChoiceField(choices=ipaddress_status_choices, required=False)
|
status = forms.MultipleChoiceField(choices=ipaddress_status_choices, required=False)
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Service Port
|
|
||||||
#
|
|
||||||
|
|
||||||
class ServicePortForm(forms.ModelForm, BootstrapMixin):
|
|
||||||
class Meta:
|
|
||||||
model = ServicePort
|
|
||||||
fields = ['ip_address', 'protocol', 'port', 'name', 'description']
|
|
||||||
help_texts = {
|
|
||||||
'port': '0-65535',
|
|
||||||
'name': 'Service running on this port',
|
|
||||||
'description': 'Service description'
|
|
||||||
}
|
|
||||||
labels = {
|
|
||||||
'ip_address': "IP Address",
|
|
||||||
}
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super(ServicePortForm, self).__init__(*args, **kwargs)
|
|
||||||
# self.fields['device'].
|
|
||||||
self.fields['ip_address'].queryset = IPAddress.objects.filter(interface__device=kwargs['instance'].device)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# VLAN groups
|
# VLAN groups
|
||||||
#
|
#
|
||||||
|
@ -478,7 +478,7 @@ class ServicePort(CreatedUpdatedModel):
|
|||||||
return u'{}/{}'.format(self.port, port_protocol)
|
return u'{}/{}'.format(self.port, port_protocol)
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('ipam:serviceport', args=[self.pk])
|
return reverse('dcim:serviceport', args=[self.pk])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def short_description(self):
|
def short_description(self):
|
||||||
|
@ -60,11 +60,6 @@ urlpatterns = [
|
|||||||
url(r'^ip-addresses/(?P<pk>\d+)/remove/$', views.ipaddress_remove, name='ipaddress_remove'),
|
url(r'^ip-addresses/(?P<pk>\d+)/remove/$', views.ipaddress_remove, name='ipaddress_remove'),
|
||||||
url(r'^ip-addresses/(?P<pk>\d+)/delete/$', views.IPAddressDeleteView.as_view(), name='ipaddress_delete'),
|
url(r'^ip-addresses/(?P<pk>\d+)/delete/$', views.IPAddressDeleteView.as_view(), name='ipaddress_delete'),
|
||||||
|
|
||||||
# Service Ports
|
|
||||||
url(r'^service-ports/(?P<pk>\d+)/$', views.serviceport, name='serviceport'),
|
|
||||||
url(r'^service-ports/(?P<pk>\d+)/edit/$', views.ServicePortEditView.as_view(), name='serviceport_edit'),
|
|
||||||
url(r'^service-ports/(?P<pk>\d+)/delete/$', views.ServicePortDeleteView.as_view(), name='serviceport_delete'),
|
|
||||||
|
|
||||||
# VLAN groups
|
# VLAN groups
|
||||||
url(r'^vlan-groups/$', views.VLANGroupListView.as_view(), name='vlangroup_list'),
|
url(r'^vlan-groups/$', views.VLANGroupListView.as_view(), name='vlangroup_list'),
|
||||||
url(r'^vlan-groups/add/$', views.VLANGroupEditView.as_view(), name='vlangroup_add'),
|
url(r'^vlan-groups/add/$', views.VLANGroupEditView.as_view(), name='vlangroup_add'),
|
||||||
|
@ -645,46 +645,6 @@ class IPAddressBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
|||||||
cls = IPAddress
|
cls = IPAddress
|
||||||
default_redirect_url = 'ipam:ipaddress_list'
|
default_redirect_url = 'ipam:ipaddress_list'
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Service Ports
|
|
||||||
#
|
|
||||||
|
|
||||||
def serviceport(request, pk):
|
|
||||||
service_port = get_object_or_404(ServicePort.objects.select_related('device'), pk=pk)
|
|
||||||
|
|
||||||
return render(request, 'ipam/serviceport.html', {
|
|
||||||
'service_port': service_port,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
class ServicePortEditView(PermissionRequiredMixin, ObjectEditView):
|
|
||||||
permission_required = 'ipam.change_ipaddress'
|
|
||||||
model = ServicePort
|
|
||||||
form_class = forms.ServicePortForm
|
|
||||||
fields_initial = ['ip_address', 'port' 'protocol', '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.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.device.pk})
|
|
||||||
|
|
||||||
return super(ServicePortDeleteView, self).post(request, *args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# VLAN groups
|
# VLAN groups
|
||||||
#
|
#
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
{{ port.ip_address }}
|
{{ port.ip_address }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{% url 'ipam:serviceport' pk=port.pk %}"> {{ port }} </a>
|
<a href="{% url 'dcim:serviceport' pk=port.pk %}"> {{ port }} </a>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ port.name }}</td>
|
<td>{{ port.name }}</td>
|
||||||
<td>
|
<td>
|
||||||
@ -16,12 +16,12 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
{% if perms.ipam.change_ipaddress %}
|
{% if perms.ipam.change_ipaddress %}
|
||||||
<a href="{% url 'ipam:serviceport_edit' pk=port.pk %}" class="btn btn-info btn-xs" title="Edit service port">
|
<a href="{% url 'dcim:serviceport_edit' pk=port.pk %}" class="btn btn-info btn-xs" title="Edit service port">
|
||||||
<i class="glyphicon glyphicon-pencil" aria-hidden="true"></i>
|
<i class="glyphicon glyphicon-pencil" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if perms.ipam.delete_ipaddress %}
|
{% if perms.ipam.delete_ipaddress %}
|
||||||
<a href="{% url 'ipam:serviceport_delete' pk=port.pk %}" class="btn btn-danger btn-xs">
|
<a href="{% url 'dcim:serviceport_delete' pk=port.pk %}" class="btn btn-danger btn-xs">
|
||||||
<i class="glyphicon glyphicon-trash" aria-hidden="true" title="Delete port"></i>
|
<i class="glyphicon glyphicon-trash" aria-hidden="true" title="Delete port"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
</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">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">{{ device }}</p>
|
<p class="form-control-static">{{ device }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,13 +14,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
{% if perms.ipam.change_ipaddress %}
|
{% if perms.ipam.change_ipaddress %}
|
||||||
<a href="{% url 'ipam:serviceport_edit' pk=service_port.pk %}" class="btn btn-warning">
|
<a href="{% url 'dcim:serviceport_edit' pk=service_port.pk %}" class="btn btn-warning">
|
||||||
<span class="fa fa-pencil" aria-hidden="true"></span>
|
<span class="fa fa-pencil" aria-hidden="true"></span>
|
||||||
Edit this Service Port
|
Edit this Service Port
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if perms.ipam.delete_ipaddress %}
|
{% if perms.ipam.delete_ipaddress %}
|
||||||
<a href="{% url 'ipam:serviceport_delete' pk=service_port.pk %}" class="btn btn-danger">
|
<a href="{% url 'dcim:serviceport_delete' pk=service_port.pk %}" class="btn btn-danger">
|
||||||
<span class="fa fa-trash" aria-hidden="true"></span>
|
<span class="fa fa-trash" aria-hidden="true"></span>
|
||||||
Delete this Service Port
|
Delete this Service Port
|
||||||
</a>
|
</a>
|
||||||
|
Loading…
Reference in New Issue
Block a user