Move ServicePort related urls and views from ipam to dcim

This commit is contained in:
Iva Kaneva 2016-11-26 00:55:05 +02:00
parent 3cc54a1886
commit 2cd5e49e91
10 changed files with 71 additions and 77 deletions

View File

@ -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
#

View File

@ -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'),
]

View File

@ -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'],

View File

@ -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
#

View File

@ -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):

View File

@ -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'),

View File

@ -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
#

View File

@ -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 %}

View File

@ -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>

View File

@ -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>