mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-28 03:16:25 -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)
|
||||
|
||||
|
||||
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
|
||||
#
|
||||
|
@ -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+)/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')
|
||||
def serviceport_assign(request, pk):
|
||||
device = get_object_or_404(Device, pk=pk)
|
||||
@ -1610,7 +1649,7 @@ def serviceport_assign(request, pk):
|
||||
if form.is_valid():
|
||||
serv_form = forms.ServicePortForm({
|
||||
'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'],
|
||||
'port': form.cleaned_data['port'],
|
||||
'name': form.cleaned_data['name'],
|
||||
|
@ -10,7 +10,7 @@ from utilities.forms import (
|
||||
|
||||
from .models import (
|
||||
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)
|
||||
|
||||
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
@ -478,7 +478,7 @@ class ServicePort(CreatedUpdatedModel):
|
||||
return u'{}/{}'.format(self.port, port_protocol)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('ipam:serviceport', args=[self.pk])
|
||||
return reverse('dcim:serviceport', args=[self.pk])
|
||||
|
||||
@property
|
||||
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+)/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
|
||||
url(r'^vlan-groups/$', views.VLANGroupListView.as_view(), name='vlangroup_list'),
|
||||
url(r'^vlan-groups/add/$', views.VLANGroupEditView.as_view(), name='vlangroup_add'),
|
||||
|
@ -645,46 +645,6 @@ class IPAddressBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
cls = IPAddress
|
||||
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
|
||||
#
|
||||
|
@ -3,7 +3,7 @@
|
||||
{{ port.ip_address }}
|
||||
</td>
|
||||
<td>
|
||||
<a href="{% url 'ipam:serviceport' pk=port.pk %}"> {{ port }} </a>
|
||||
<a href="{% url 'dcim:serviceport' pk=port.pk %}"> {{ port }} </a>
|
||||
</td>
|
||||
<td>{{ port.name }}</td>
|
||||
<td>
|
||||
@ -16,12 +16,12 @@
|
||||
</td>
|
||||
<td class="text-right">
|
||||
{% 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>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% 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>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
@ -22,7 +22,7 @@
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<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">
|
||||
<p class="form-control-static">{{ device }}</p>
|
||||
</div>
|
||||
|
@ -14,13 +14,13 @@
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
{% 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>
|
||||
Edit this Service Port
|
||||
</a>
|
||||
{% endif %}
|
||||
{% 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>
|
||||
Delete this Service Port
|
||||
</a>
|
||||
|
Loading…
Reference in New Issue
Block a user