From b19e2037af7b2435756af2f00217a62dfba2b06b Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 25 Oct 2018 12:08:13 -0400 Subject: [PATCH] Dropped 'Panel' from FrontPanelPort/RearPanelPort names --- netbox/dcim/api/serializers.py | 64 ++++---- netbox/dcim/api/urls.py | 8 +- netbox/dcim/api/views.py | 36 ++--- netbox/dcim/constants.py | 52 +++--- netbox/dcim/filters.py | 20 +-- netbox/dcim/forms.py | 62 +++---- ...anel_ports.py => 0065_front_rear_ports.py} | 38 ++--- netbox/dcim/migrations/0066_cables.py | 6 +- netbox/dcim/models.py | 66 ++++---- netbox/dcim/tables.py | 20 +-- netbox/dcim/urls.py | 40 ++--- netbox/dcim/views.py | 152 +++++++++--------- netbox/templates/dcim/device.html | 40 ++--- netbox/templates/dcim/devicetype.html | 8 +- netbox/templates/dcim/inc/frontpanelport.html | 25 --- netbox/templates/dcim/inc/frontport.html | 25 +++ netbox/templates/dcim/inc/rearpanelport.html | 24 --- netbox/templates/dcim/inc/rearport.html | 24 +++ 18 files changed, 355 insertions(+), 355 deletions(-) rename netbox/dcim/migrations/{0065_patch_panel_ports.py => 0065_front_rear_ports.py} (80%) delete mode 100644 netbox/templates/dcim/inc/frontpanelport.html create mode 100644 netbox/templates/dcim/inc/frontport.html delete mode 100644 netbox/templates/dcim/inc/rearpanelport.html create mode 100644 netbox/templates/dcim/inc/rearport.html diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 6e113d394..4f458fbc5 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -6,9 +6,9 @@ from circuits.models import Circuit, CircuitTermination from dcim.constants import * from dcim.models import ( ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay, - DeviceBayTemplate, DeviceType, DeviceRole, FrontPanelPort, FrontPanelPortTemplate, Interface, InterfaceTemplate, + DeviceBayTemplate, DeviceType, DeviceRole, FrontPort, FrontPortTemplate, Interface, InterfaceTemplate, Manufacturer, InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, - RackGroup, RackReservation, RackRole, RearPanelPort, RearPanelPortTemplate, Region, Site, VirtualChassis, + RackGroup, RackReservation, RackRole, RearPort, RearPortTemplate, Region, Site, VirtualChassis, ) from extras.api.customfields import CustomFieldModelSerializer from ipam.models import IPAddress, VLAN @@ -302,45 +302,45 @@ class InterfaceTemplateSerializer(ValidatedModelSerializer): # -# Rear panel port templates +# Rear port templates # -class RearPanelPortTemplateSerializer(ValidatedModelSerializer): +class RearPortTemplateSerializer(ValidatedModelSerializer): device_type = NestedDeviceTypeSerializer() - type = ChoiceField(choices=PANELPORT_TYPE_CHOICES) + type = ChoiceField(choices=PORT_TYPE_CHOICES) class Meta: - model = RearPanelPortTemplate + model = RearPortTemplate fields = ['id', 'device_type', 'name', 'type', 'positions'] -class NestedRearPanelPortTemplateSerializer(WritableNestedSerializer): - url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearpanelporttemplate-detail') +class NestedRearPortTemplateSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearporttemplate-detail') class Meta: - model = RearPanelPortTemplate + model = RearPortTemplate fields = ['id', 'url', 'name'] # -# Front panel port templates +# Front port templates # -class FrontPanelPortTemplateSerializer(ValidatedModelSerializer): +class FrontPortTemplateSerializer(ValidatedModelSerializer): device_type = NestedDeviceTypeSerializer() - type = ChoiceField(choices=PANELPORT_TYPE_CHOICES) - rear_port = NestedRearPanelPortTemplateSerializer() + type = ChoiceField(choices=PORT_TYPE_CHOICES) + rear_port = NestedRearPortTemplateSerializer() class Meta: - model = FrontPanelPortTemplate + model = FrontPortTemplate fields = ['id', 'device_type', 'name', 'type', 'rear_port', 'rear_port_position'] -class NestedFrontPanelPortTemplateSerializer(WritableNestedSerializer): - url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontpanelporttemplate-detail') +class NestedFrontPortTemplateSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontporttemplate-detail') class Meta: - model = FrontPanelPortTemplate + model = FrontPortTemplate fields = ['id', 'url', 'name'] @@ -703,47 +703,47 @@ class InterfaceSerializer(TaggitSerializer, IsConnectedMixin, ValidatedModelSeri # -# Rear panel ports +# Rear ports # -class RearPanelPortSerializer(ValidatedModelSerializer): +class RearPortSerializer(ValidatedModelSerializer): device = NestedDeviceSerializer() - type = ChoiceField(choices=PANELPORT_TYPE_CHOICES) + type = ChoiceField(choices=PORT_TYPE_CHOICES) tags = TagListSerializerField(required=False) class Meta: - model = RearPanelPort + model = RearPort fields = ['id', 'device', 'name', 'type', 'positions', 'tags'] -class NestedRearPanelPortSerializer(WritableNestedSerializer): - url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearpanelport-detail') +class NestedRearPortSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail') class Meta: - model = RearPanelPort + model = RearPort fields = ['id', 'url', 'name'] # -# Front panel ports +# Front ports # -class FrontPanelPortSerializer(ValidatedModelSerializer): +class FrontPortSerializer(ValidatedModelSerializer): device = NestedDeviceSerializer() - type = ChoiceField(choices=PANELPORT_TYPE_CHOICES) - rear_port = NestedRearPanelPortSerializer() + type = ChoiceField(choices=PORT_TYPE_CHOICES) + rear_port = NestedRearPortSerializer() tags = TagListSerializerField(required=False) class Meta: - model = FrontPanelPort + model = FrontPort fields = ['id', 'device', 'name', 'type', 'rear_port', 'rear_port_position', 'tags'] -class NestedFrontPanelPortSerializer(WritableNestedSerializer): - url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontpanelport-detail') +class NestedFrontPortSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontport-detail') class Meta: - model = FrontPanelPort + model = FrontPort fields = ['id', 'url', 'name'] diff --git a/netbox/dcim/api/urls.py b/netbox/dcim/api/urls.py index 4ddbaf9a8..9a6f00c18 100644 --- a/netbox/dcim/api/urls.py +++ b/netbox/dcim/api/urls.py @@ -37,8 +37,8 @@ router.register(r'console-server-port-templates', views.ConsoleServerPortTemplat router.register(r'power-port-templates', views.PowerPortTemplateViewSet) router.register(r'power-outlet-templates', views.PowerOutletTemplateViewSet) router.register(r'interface-templates', views.InterfaceTemplateViewSet) -router.register(r'front-panel-port-templates', views.FrontPanelPortTemplateViewSet) -router.register(r'rear-panel-port-templates', views.RearPanelPortTemplateViewSet) +router.register(r'front-port-templates', views.FrontPortTemplateViewSet) +router.register(r'rear-port-templates', views.RearPortTemplateViewSet) router.register(r'device-bay-templates', views.DeviceBayTemplateViewSet) # Devices @@ -52,8 +52,8 @@ router.register(r'console-server-ports', views.ConsoleServerPortViewSet) router.register(r'power-ports', views.PowerPortViewSet) router.register(r'power-outlets', views.PowerOutletViewSet) router.register(r'interfaces', views.InterfaceViewSet) -router.register(r'front-panel-ports', views.FrontPanelPortViewSet) -router.register(r'rear-panel-ports', views.RearPanelPortViewSet) +router.register(r'front-ports', views.FrontPortViewSet) +router.register(r'rear-ports', views.RearPortViewSet) router.register(r'device-bays', views.DeviceBayViewSet) router.register(r'inventory-items', views.InventoryItemViewSet) diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 6128d3411..9586bbcf6 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -15,9 +15,9 @@ from rest_framework.viewsets import GenericViewSet, ViewSet from dcim import filters from dcim.models import ( ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay, - DeviceBayTemplate, DeviceRole, DeviceType, FrontPanelPort, FrontPanelPortTemplate, Interface, InterfaceTemplate, + DeviceBayTemplate, DeviceRole, DeviceType, FrontPort, FrontPortTemplate, Interface, InterfaceTemplate, Manufacturer, InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, - RackGroup, RackReservation, RackRole, RearPanelPort, RearPanelPortTemplate, Region, Site, VirtualChassis, + RackGroup, RackReservation, RackRole, RearPort, RearPortTemplate, Region, Site, VirtualChassis, ) from extras.api.serializers import RenderedGraphSerializer from extras.api.views import CustomFieldModelViewSet @@ -191,16 +191,16 @@ class InterfaceTemplateViewSet(ModelViewSet): filter_class = filters.InterfaceTemplateFilter -class FrontPanelPortTemplateViewSet(ModelViewSet): - queryset = FrontPanelPortTemplate.objects.select_related('device_type__manufacturer') - serializer_class = serializers.FrontPanelPortTemplateSerializer - filter_class = filters.FrontPanelPortTemplateFilter +class FrontPortTemplateViewSet(ModelViewSet): + queryset = FrontPortTemplate.objects.select_related('device_type__manufacturer') + serializer_class = serializers.FrontPortTemplateSerializer + filter_class = filters.FrontPortTemplateFilter -class RearPanelPortTemplateViewSet(ModelViewSet): - queryset = RearPanelPortTemplate.objects.select_related('device_type__manufacturer') - serializer_class = serializers.RearPanelPortTemplateSerializer - filter_class = filters.RearPanelPortTemplateFilter +class RearPortTemplateViewSet(ModelViewSet): + queryset = RearPortTemplate.objects.select_related('device_type__manufacturer') + serializer_class = serializers.RearPortTemplateSerializer + filter_class = filters.RearPortTemplateFilter class DeviceBayTemplateViewSet(ModelViewSet): @@ -369,16 +369,16 @@ class InterfaceViewSet(ModelViewSet): return Response(serializer.data) -class FrontPanelPortViewSet(ModelViewSet): - queryset = FrontPanelPort.objects.select_related('device__device_type__manufacturer', 'rear_port') - serializer_class = serializers.FrontPanelPortSerializer - filter_class = filters.FrontPanelPortFilter +class FrontPortViewSet(ModelViewSet): + queryset = FrontPort.objects.select_related('device__device_type__manufacturer', 'rear_port') + serializer_class = serializers.FrontPortSerializer + filter_class = filters.FrontPortFilter -class RearPanelPortViewSet(ModelViewSet): - queryset = RearPanelPort.objects.select_related('device__device_type__manufacturer') - serializer_class = serializers.RearPanelPortSerializer - filter_class = filters.RearPanelPortFilter +class RearPortViewSet(ModelViewSet): + queryset = RearPort.objects.select_related('device__device_type__manufacturer') + serializer_class = serializers.RearPortSerializer + filter_class = filters.RearPortFilter class DeviceBayViewSet(ModelViewSet): diff --git a/netbox/dcim/constants.py b/netbox/dcim/constants.py index 07078525c..fed089486 100644 --- a/netbox/dcim/constants.py +++ b/netbox/dcim/constants.py @@ -209,32 +209,32 @@ IFACE_MODE_CHOICES = [ [IFACE_MODE_TAGGED_ALL, 'Tagged All'], ] -# Patch panel port types -PANELPORT_TYPE_8P8C = 1000 -PANELPORT_TYPE_ST = 2000 -PANELPORT_TYPE_SC_SIMPLEX = 2100 -PANELPORT_TYPE_SC_DUPLEX = 2110 -PANELPORT_TYPE_FC = 2200 -PANELPORT_TYPE_LC = 2300 -PANELPORT_TYPE_MTRJ = 2400 -PANELPORT_TYPE_MPO = 2500 -PANELPORT_TYPE_CHOICES = [ +# Pass-through port types +PORT_TYPE_8P8C = 1000 +PORT_TYPE_ST = 2000 +PORT_TYPE_SC_SIMPLEX = 2100 +PORT_TYPE_SC_DUPLEX = 2110 +PORT_TYPE_FC = 2200 +PORT_TYPE_LC = 2300 +PORT_TYPE_MTRJ = 2400 +PORT_TYPE_MPO = 2500 +PORT_TYPE_CHOICES = [ [ 'Copper', [ - [PANELPORT_TYPE_8P8C, '8P8C'], + [PORT_TYPE_8P8C, '8P8C'], ], ], [ 'Fiber Optic', [ - [PANELPORT_TYPE_ST, 'ST'], - [PANELPORT_TYPE_SC_SIMPLEX, 'SC (Simplex)'], - [PANELPORT_TYPE_SC_DUPLEX, 'SC (Duplex)'], - [PANELPORT_TYPE_FC, 'FC'], - [PANELPORT_TYPE_LC, 'LC'], - [PANELPORT_TYPE_MTRJ, 'MTRJ'], - [PANELPORT_TYPE_MPO, 'MPO'], + [PORT_TYPE_ST, 'ST'], + [PORT_TYPE_SC_SIMPLEX, 'SC (Simplex)'], + [PORT_TYPE_SC_DUPLEX, 'SC (Duplex)'], + [PORT_TYPE_FC, 'FC'], + [PORT_TYPE_LC, 'LC'], + [PORT_TYPE_MTRJ, 'MTRJ'], + [PORT_TYPE_MPO, 'MPO'], ] ] ] @@ -285,7 +285,7 @@ CONNECTION_STATUS_CHOICES = [ # Cable endpoint types CABLE_TERMINATION_TYPES = [ - 'consoleport', 'consoleserverport', 'interface', 'poweroutlet', 'powerport', 'frontpanelport', 'rearpanelport', + 'consoleport', 'consoleserverport', 'interface', 'poweroutlet', 'powerport', 'frontport', 'rearport', ] # Cable types @@ -304,16 +304,16 @@ CABLE_TERMINATION_TYPE_CHOICES = { 'powerport': ('power-ports', 'Power port'), 'poweroutlet': ('power-outlets', 'Power outlet'), 'interface': ('interfaces', 'Interface'), - 'frontpanelport': ('front-panel-ports', 'Front panel port'), - 'rearpanelport': ('rear-panel-ports', 'Rear panel port'), + 'frontport': ('front-ports', 'Front panel port'), + 'rearport': ('rear-ports', 'Rear panel port'), } COMPATIBLE_TERMINATION_TYPES = { - 'consoleport': ['consoleserverport', 'frontpanelport', 'rearpanelport'], - 'consoleserverport': ['consoleport', 'frontpanelport', 'rearpanelport'], + 'consoleport': ['consoleserverport', 'frontport', 'rearport'], + 'consoleserverport': ['consoleport', 'frontport', 'rearport'], 'powerport': ['poweroutlet'], 'poweroutlet': ['powerport'], - 'interface': ['interface', 'frontpanelport', 'rearpanelport'], - 'frontpanelport': ['consoleport', 'consoleserverport', 'interface', 'frontpanelport', 'rearpanelport'], - 'rearpanelport': ['consoleport', 'consoleserverport', 'interface', 'frontpanelport', 'rearpanelport'], + 'interface': ['interface', 'frontport', 'rearport'], + 'frontport': ['consoleport', 'consoleserverport', 'interface', 'frontport', 'rearport'], + 'rearport': ['consoleport', 'consoleserverport', 'interface', 'frontport', 'rearport'], } diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index d619e4f83..71f136d15 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -14,9 +14,9 @@ from .constants import ( ) from .models import ( Cable, ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay, - DeviceBayTemplate, DeviceRole, DeviceType, FrontPanelPort, FrontPanelPortTemplate, Interface, InterfaceTemplate, + DeviceBayTemplate, DeviceRole, DeviceType, FrontPort, FrontPortTemplate, Interface, InterfaceTemplate, InventoryItem, Manufacturer, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, - RackGroup, RackReservation, RackRole, RearPanelPort, RearPanelPortTemplate, Region, Site, VirtualChassis, + RackGroup, RackReservation, RackRole, RearPort, RearPortTemplate, Region, Site, VirtualChassis, ) @@ -368,17 +368,17 @@ class InterfaceTemplateFilter(DeviceTypeComponentFilterSet): fields = ['name', 'form_factor', 'mgmt_only'] -class FrontPanelPortTemplateFilter(DeviceTypeComponentFilterSet): +class FrontPortTemplateFilter(DeviceTypeComponentFilterSet): class Meta: - model = FrontPanelPortTemplate + model = FrontPortTemplate fields = ['name', 'type'] -class RearPanelPortTemplateFilter(DeviceTypeComponentFilterSet): +class RearPortTemplateFilter(DeviceTypeComponentFilterSet): class Meta: - model = RearPanelPortTemplate + model = RearPortTemplate fields = ['name', 'type'] @@ -681,17 +681,17 @@ class InterfaceFilter(django_filters.FilterSet): return queryset.none() -class FrontPanelPortFilter(DeviceComponentFilterSet): +class FrontPortFilter(DeviceComponentFilterSet): class Meta: - model = FrontPanelPort + model = FrontPort fields = ['name', 'type'] -class RearPanelPortFilter(DeviceComponentFilterSet): +class RearPortFilter(DeviceComponentFilterSet): class Meta: - model = RearPanelPort + model = RearPort fields = ['name', 'type'] diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index 7b12db2e2..b0d5f95f2 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -27,9 +27,9 @@ from virtualization.models import Cluster from .constants import * from .models import ( Cable, DeviceBay, DeviceBayTemplate, ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, - Device, DeviceRole, DeviceType, FrontPanelPort, FrontPanelPortTemplate, Interface, InterfaceTemplate, Manufacturer, + Device, DeviceRole, DeviceType, FrontPort, FrontPortTemplate, Interface, InterfaceTemplate, Manufacturer, InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup, - RackReservation, RackRole, RearPanelPort, RearPanelPortTemplate, Region, Site, VirtualChassis, + RackReservation, RackRole, RearPort, RearPortTemplate, Region, Site, VirtualChassis, ) DEVICE_BY_PK_RE = r'{\d+\}' @@ -702,22 +702,22 @@ class InterfaceTemplateBulkEditForm(BootstrapMixin, BulkEditForm): nullable_fields = [] -class FrontPanelPortTemplateForm(BootstrapMixin, forms.ModelForm): +class FrontPortTemplateForm(BootstrapMixin, forms.ModelForm): class Meta: - model = FrontPanelPortTemplate + model = FrontPortTemplate fields = ['device_type', 'name', 'type', 'rear_port', 'rear_port_position'] widgets = { 'device_type': forms.HiddenInput(), } -class FrontPanelPortTemplateCreateForm(ComponentForm): +class FrontPortTemplateCreateForm(ComponentForm): name_pattern = ExpandableNameField( label='Name' ) type = forms.ChoiceField( - choices=PANELPORT_TYPE_CHOICES + choices=PORT_TYPE_CHOICES ) rear_port_set = forms.MultipleChoiceField( choices=[], @@ -727,17 +727,17 @@ class FrontPanelPortTemplateCreateForm(ComponentForm): def __init__(self, *args, **kwargs): - super(FrontPanelPortTemplateCreateForm, self).__init__(*args, **kwargs) + super(FrontPortTemplateCreateForm, self).__init__(*args, **kwargs) # Determine which rear port positions are occupied. These will be excluded from the list of available mappings. occupied_port_positions = [ (front_port.rear_port_id, front_port.rear_port_position) - for front_port in self.parent.front_panel_port_templates.all() + for front_port in self.parent.front_port_templates.all() ] # Populate rear port choices choices = [] - rear_ports = natsorted(RearPanelPortTemplate.objects.filter(device_type=self.parent), key=attrgetter('name')) + rear_ports = natsorted(RearPortTemplate.objects.filter(device_type=self.parent), key=attrgetter('name')) for rear_port in rear_ports: for i in range(1, rear_port.positions + 1): if (rear_port.pk, i) not in occupied_port_positions: @@ -768,22 +768,22 @@ class FrontPanelPortTemplateCreateForm(ComponentForm): } -class RearPanelPortTemplateForm(BootstrapMixin, forms.ModelForm): +class RearPortTemplateForm(BootstrapMixin, forms.ModelForm): class Meta: - model = RearPanelPortTemplate + model = RearPortTemplate fields = ['device_type', 'name', 'type', 'positions'] widgets = { 'device_type': forms.HiddenInput(), } -class RearPanelPortTemplateCreateForm(ComponentForm): +class RearPortTemplateCreateForm(ComponentForm): name_pattern = ExpandableNameField( label='Name' ) type = forms.ChoiceField( - choices=PANELPORT_TYPE_CHOICES + choices=PORT_TYPE_CHOICES ) positions = forms.IntegerField( min_value=1, @@ -2018,27 +2018,27 @@ class InterfaceBulkDisconnectForm(ConfirmationForm): # -# Front panel ports +# Front pass-through ports # -class FrontPanelPortForm(BootstrapMixin, forms.ModelForm): +class FrontPortForm(BootstrapMixin, forms.ModelForm): tags = TagField(required=False) class Meta: - model = FrontPanelPort + model = FrontPort fields = ['device', 'name', 'type', 'rear_port', 'rear_port_position', 'tags'] widgets = { 'device': forms.HiddenInput(), } -# TODO: Merge with FrontPanelPortTemplateCreateForm to remove duplicate logic -class FrontPanelPortCreateForm(ComponentForm): +# TODO: Merge with FrontPortTemplateCreateForm to remove duplicate logic +class FrontPortCreateForm(ComponentForm): name_pattern = ExpandableNameField( label='Name' ) type = forms.ChoiceField( - choices=PANELPORT_TYPE_CHOICES + choices=PORT_TYPE_CHOICES ) rear_port_set = forms.MultipleChoiceField( choices=[], @@ -2048,17 +2048,17 @@ class FrontPanelPortCreateForm(ComponentForm): def __init__(self, *args, **kwargs): - super(FrontPanelPortCreateForm, self).__init__(*args, **kwargs) + super(FrontPortCreateForm, self).__init__(*args, **kwargs) # Determine which rear port positions are occupied. These will be excluded from the list of available mappings. occupied_port_positions = [ (front_port.rear_port_id, front_port.rear_port_position) - for front_port in self.parent.front_panel_port_templates.all() + for front_port in self.parent.front_port_templates.all() ] # Populate rear port choices choices = [] - rear_ports = natsorted(RearPanelPort.objects.filter(device=self.parent), key=attrgetter('name')) + rear_ports = natsorted(RearPort.objects.filter(device=self.parent), key=attrgetter('name')) for rear_port in rear_ports: for i in range(1, rear_port.positions + 1): if (rear_port.pk, i) not in occupied_port_positions: @@ -2089,34 +2089,34 @@ class FrontPanelPortCreateForm(ComponentForm): } -class FrontPanelPortBulkRenameForm(BulkRenameForm): +class FrontPortBulkRenameForm(BulkRenameForm): pk = forms.ModelMultipleChoiceField( - queryset=FrontPanelPort.objects.all(), + queryset=FrontPort.objects.all(), widget=forms.MultipleHiddenInput ) # -# Rear panel ports +# Rear pass-through ports # -class RearPanelPortForm(BootstrapMixin, forms.ModelForm): +class RearPortForm(BootstrapMixin, forms.ModelForm): tags = TagField(required=False) class Meta: - model = RearPanelPort + model = RearPort fields = ['device', 'name', 'type', 'positions', 'tags'] widgets = { 'device': forms.HiddenInput(), } -class RearPanelPortCreateForm(ComponentForm): +class RearPortCreateForm(ComponentForm): name_pattern = ExpandableNameField( label='Name' ) type = forms.ChoiceField( - choices=PANELPORT_TYPE_CHOICES + choices=PORT_TYPE_CHOICES ) positions = forms.IntegerField( min_value=1, @@ -2126,9 +2126,9 @@ class RearPanelPortCreateForm(ComponentForm): ) -class RearPanelPortBulkRenameForm(BulkRenameForm): +class RearPortBulkRenameForm(BulkRenameForm): pk = forms.ModelMultipleChoiceField( - queryset=RearPanelPort.objects.all(), + queryset=RearPort.objects.all(), widget=forms.MultipleHiddenInput ) diff --git a/netbox/dcim/migrations/0065_patch_panel_ports.py b/netbox/dcim/migrations/0065_front_rear_ports.py similarity index 80% rename from netbox/dcim/migrations/0065_patch_panel_ports.py rename to netbox/dcim/migrations/0065_front_rear_ports.py index 48b77e561..6cc4340f2 100644 --- a/netbox/dcim/migrations/0065_patch_panel_ports.py +++ b/netbox/dcim/migrations/0065_front_rear_ports.py @@ -15,20 +15,20 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='FrontPanelPort', + name='FrontPort', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), ('name', models.CharField(max_length=64)), ('type', models.PositiveSmallIntegerField()), ('rear_port_position', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(64)])), - ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='front_panel_ports', to='dcim.Device')), + ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='front_ports', to='dcim.Device')), ], options={ 'ordering': ['device', 'name'], }, ), migrations.CreateModel( - name='FrontPanelPortTemplate', + name='FrontPortTemplate', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), ('name', models.CharField(max_length=64)), @@ -40,13 +40,13 @@ class Migration(migrations.Migration): }, ), migrations.CreateModel( - name='RearPanelPort', + name='RearPort', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), ('name', models.CharField(max_length=64)), ('type', models.PositiveSmallIntegerField()), ('positions', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(64)])), - ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rear_panel_ports', to='dcim.Device')), + ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rear_ports', to='dcim.Device')), ('tags', taggit.managers.TaggableManager(through='taggit.TaggedItem', to='taggit.Tag')), ], options={ @@ -54,7 +54,7 @@ class Migration(migrations.Migration): }, ), migrations.CreateModel( - name='RearPanelPortTemplate', + name='RearPortTemplate', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), ('name', models.CharField(max_length=64)), @@ -71,44 +71,44 @@ class Migration(migrations.Migration): field=models.BooleanField(default=False), ), migrations.AddField( - model_name='rearpanelporttemplate', + model_name='rearporttemplate', name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rear_panel_port_templates', to='dcim.DeviceType'), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rear_port_templates', to='dcim.DeviceType'), ), migrations.AddField( - model_name='frontpanelporttemplate', + model_name='frontporttemplate', name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='front_panel_port_templates', to='dcim.DeviceType'), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='front_port_templates', to='dcim.DeviceType'), ), migrations.AddField( - model_name='frontpanelporttemplate', + model_name='frontporttemplate', name='rear_port', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='front_panel_port_templates', to='dcim.RearPanelPortTemplate'), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='front_port_templates', to='dcim.RearPortTemplate'), ), migrations.AddField( - model_name='frontpanelport', + model_name='frontport', name='rear_port', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='front_panel_ports', to='dcim.RearPanelPort'), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='front_ports', to='dcim.RearPort'), ), migrations.AddField( - model_name='frontpanelport', + model_name='frontport', name='tags', field=taggit.managers.TaggableManager(through='taggit.TaggedItem', to='taggit.Tag'), ), migrations.AlterUniqueTogether( - name='rearpanelporttemplate', + name='rearporttemplate', unique_together={('device_type', 'name')}, ), migrations.AlterUniqueTogether( - name='rearpanelport', + name='rearport', unique_together={('device', 'name')}, ), migrations.AlterUniqueTogether( - name='frontpanelporttemplate', + name='frontporttemplate', unique_together={('rear_port', 'rear_port_position'), ('device_type', 'name')}, ), migrations.AlterUniqueTogether( - name='frontpanelport', + name='frontport', unique_together={('device', 'name'), ('rear_port', 'rear_port_position')}, ), ] diff --git a/netbox/dcim/migrations/0066_cables.py b/netbox/dcim/migrations/0066_cables.py index 7865be358..773dc4d3a 100644 --- a/netbox/dcim/migrations/0066_cables.py +++ b/netbox/dcim/migrations/0066_cables.py @@ -105,7 +105,7 @@ class Migration(migrations.Migration): dependencies = [ ('contenttypes', '0002_remove_content_type_name'), - ('dcim', '0065_patch_panel_ports'), + ('dcim', '0065_front_rear_ports'), ] operations = [ @@ -123,8 +123,8 @@ class Migration(migrations.Migration): ('status', models.BooleanField(default=True)), ('label', models.CharField(blank=True, max_length=100)), ('color', utilities.fields.ColorField(blank=True, max_length=6)), - ('termination_a_type', models.ForeignKey(limit_choices_to={'model__in': ['consoleport', 'consoleserverport', 'interface', 'poweroutlet', 'powerport', 'frontpanelport', 'rearpanelport']}, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType')), - ('termination_b_type', models.ForeignKey(limit_choices_to={'model__in': ['consoleport', 'consoleserverport', 'interface', 'poweroutlet', 'powerport', 'frontpanelport', 'rearpanelport']}, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType')), + ('termination_a_type', models.ForeignKey(limit_choices_to={'model__in': ['consoleport', 'consoleserverport', 'interface', 'poweroutlet', 'powerport', 'frontport', 'rearport']}, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType')), + ('termination_b_type', models.ForeignKey(limit_choices_to={'model__in': ['consoleport', 'consoleserverport', 'interface', 'poweroutlet', 'powerport', 'frontport', 'rearport']}, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType')), ], ), migrations.AlterUniqueTogether( diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index de7426d41..2e042caf5 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -869,7 +869,7 @@ class DeviceType(ChangeLoggedModel, CustomFieldModel): }) if not self.is_patch_panel and ( - self.front_panel_port_templates.exists() or self.rear_panel_port_templates.exists() + self.front_port_templates.exists() or self.rear_port_templates.exists() ): raise ValidationError({ 'is_patch_panel': "Must delete all patch panel port templates associated with this device before " @@ -1015,25 +1015,25 @@ class InterfaceTemplate(ComponentTemplateModel): return self.name -class FrontPanelPortTemplate(ComponentTemplateModel): +class FrontPortTemplate(ComponentTemplateModel): """ - A template for a front patch panel port on a new Device. + Template for a pass-through port on the front of a new Device. """ device_type = models.ForeignKey( to='dcim.DeviceType', on_delete=models.CASCADE, - related_name='front_panel_port_templates' + related_name='front_port_templates' ) name = models.CharField( max_length=64 ) type = models.PositiveSmallIntegerField( - choices=PANELPORT_TYPE_CHOICES + choices=PORT_TYPE_CHOICES ) rear_port = models.ForeignKey( - to='dcim.RearPanelPortTemplate', + to='dcim.RearPortTemplate', on_delete=models.CASCADE, - related_name='front_panel_port_templates' + related_name='front_port_templates' ) rear_port_position = models.PositiveSmallIntegerField( default=1, @@ -1067,20 +1067,20 @@ class FrontPanelPortTemplate(ComponentTemplateModel): ) -class RearPanelPortTemplate(ComponentTemplateModel): +class RearPortTemplate(ComponentTemplateModel): """ - A template for a rear patch panel port on a new Device. + Template for a pass-through port on the rear of a new Device. """ device_type = models.ForeignKey( to='dcim.DeviceType', on_delete=models.CASCADE, - related_name='rear_panel_port_templates' + related_name='rear_port_templates' ) name = models.CharField( max_length=64 ) type = models.PositiveSmallIntegerField( - choices=PANELPORT_TYPE_CHOICES + choices=PORT_TYPE_CHOICES ) positions = models.PositiveSmallIntegerField( default=1, @@ -1512,22 +1512,22 @@ class Device(ChangeLoggedModel, ConfigContextModel, CustomFieldModel): [Interface(device=self, name=template.name, form_factor=template.form_factor, mgmt_only=template.mgmt_only) for template in self.device_type.interface_templates.all()] ) - RearPanelPort.objects.bulk_create([ - RearPanelPort( + RearPort.objects.bulk_create([ + RearPort( device=self, name=template.name, type=template.type, positions=template.positions - ) for template in self.device_type.rear_panel_port_templates.all() + ) for template in self.device_type.rear_port_templates.all() ]) - FrontPanelPort.objects.bulk_create([ - FrontPanelPort( + FrontPort.objects.bulk_create([ + FrontPort( device=self, name=template.name, type=template.type, - rear_port=RearPanelPort.objects.get(device=self, name=template.rear_port.name), + rear_port=RearPort.objects.get(device=self, name=template.rear_port.name), rear_port_position=template.rear_port_position, - ) for template in self.device_type.front_panel_port_templates.all() + ) for template in self.device_type.front_port_templates.all() ]) DeviceBay.objects.bulk_create( [DeviceBay(device=self, name=template.name) for template in @@ -2046,28 +2046,28 @@ class Interface(ComponentModel): # -# Patch panel ports +# Pass-through ports # -class FrontPanelPort(ComponentModel): +class FrontPort(ComponentModel): """ - A port on the front of a patch panel. + A pass-through port on the front of a Device. """ device = models.ForeignKey( to='dcim.Device', on_delete=models.CASCADE, - related_name='front_panel_ports' + related_name='front_ports' ) name = models.CharField( max_length=64 ) type = models.PositiveSmallIntegerField( - choices=PANELPORT_TYPE_CHOICES + choices=PORT_TYPE_CHOICES ) rear_port = models.ForeignKey( - to='dcim.RearPanelPort', + to='dcim.RearPort', on_delete=models.CASCADE, - related_name='front_panel_ports' + related_name='front_ports' ) rear_port_position = models.PositiveSmallIntegerField( default=1, @@ -2103,20 +2103,20 @@ class FrontPanelPort(ComponentModel): ) -class RearPanelPort(ComponentModel): +class RearPort(ComponentModel): """ - A port on the rear of a patch panel. + A pass-through port on the rear of a Device. """ device = models.ForeignKey( to='dcim.Device', on_delete=models.CASCADE, - related_name='rear_panel_ports' + related_name='rear_ports' ) name = models.CharField( max_length=64 ) type = models.PositiveSmallIntegerField( - choices=PANELPORT_TYPE_CHOICES + choices=PORT_TYPE_CHOICES ) positions = models.PositiveSmallIntegerField( default=1, @@ -2380,23 +2380,23 @@ class Cable(ChangeLoggedModel): def trace_cable(termination, position=1): # Given a front port, follow the cable connected to the corresponding rear port/position - if isinstance(termination, FrontPanelPort): + if isinstance(termination, FrontPort): peer_port = termination.rear_port position = termination.rear_port_position # Given a rear port/position, follow the cable connected to the corresponding front port - elif isinstance(termination, RearPanelPort): + elif isinstance(termination, RearPort): if position not in range(1, termination.positions + 1): raise Exception("Invalid position for {} ({} positions): {})".format( termination, termination.positions, position )) - peer_port = FrontPanelPort.objects.get( + peer_port = FrontPort.objects.get( rear_port=termination, rear_port_position=position, ) position=1 - # Termination is not a panel port, so we've reached the end of the path + # Termination is not a pass-through port, so we've reached the end of the path else: return termination diff --git a/netbox/dcim/tables.py b/netbox/dcim/tables.py index 3c8df2b06..92c74e8d3 100644 --- a/netbox/dcim/tables.py +++ b/netbox/dcim/tables.py @@ -5,9 +5,9 @@ from tenancy.tables import COL_TENANT from utilities.tables import BaseTable, BooleanColumn, ToggleColumn from .models import ( Cable, ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay, - DeviceBayTemplate, DeviceRole, DeviceType, FrontPanelPort, FrontPanelPortTemplate, Interface, InterfaceTemplate, + DeviceBayTemplate, DeviceRole, DeviceType, FrontPort, FrontPortTemplate, Interface, InterfaceTemplate, InventoryItem, Manufacturer, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, - RackGroup, RackReservation, RearPanelPort, RearPanelPortTemplate, Region, Site, VirtualChassis, + RackGroup, RackReservation, RearPort, RearPortTemplate, Region, Site, VirtualChassis, ) REGION_LINK = """ @@ -416,20 +416,20 @@ class InterfaceTemplateTable(BaseTable): empty_text = "None" -class FrontPanelPortTemplateTable(BaseTable): +class FrontPortTemplateTable(BaseTable): pk = ToggleColumn() class Meta(BaseTable.Meta): - model = FrontPanelPortTemplate + model = FrontPortTemplate fields = ('pk', 'name', 'type', 'rear_port', 'rear_port_position') empty_text = "None" -class RearPanelPortTemplateTable(BaseTable): +class RearPortTemplateTable(BaseTable): pk = ToggleColumn() class Meta(BaseTable.Meta): - model = RearPanelPortTemplate + model = RearPortTemplate fields = ('pk', 'name', 'type', 'positions') empty_text = "None" @@ -593,18 +593,18 @@ class InterfaceTable(BaseTable): fields = ('name', 'form_factor', 'lag', 'enabled', 'mgmt_only', 'description') -class FrontPanelPortTable(BaseTable): +class FrontPortTable(BaseTable): class Meta(BaseTable.Meta): - model = FrontPanelPort + model = FrontPort fields = ('name', 'type', 'rear_port', 'rear_port_position') empty_text = "None" -class RearPanelPortTable(BaseTable): +class RearPortTable(BaseTable): class Meta(BaseTable.Meta): - model = RearPanelPort + model = RearPort fields = ('name', 'type', 'positions') empty_text = "None" diff --git a/netbox/dcim/urls.py b/netbox/dcim/urls.py index 2c6152e5b..e7b69593a 100644 --- a/netbox/dcim/urls.py +++ b/netbox/dcim/urls.py @@ -109,13 +109,13 @@ urlpatterns = [ url(r'^device-types/(?P\d+)/interfaces/edit/$', views.InterfaceTemplateBulkEditView.as_view(), name='devicetype_bulkedit_interface'), url(r'^device-types/(?P\d+)/interfaces/delete/$', views.InterfaceTemplateBulkDeleteView.as_view(), name='devicetype_delete_interface'), - # Front panel port templates - url(r'^device-types/(?P\d+)/front-panel-ports/add/$', views.FrontPanelPortTemplateCreateView.as_view(), name='devicetype_add_frontpanelport'), - url(r'^device-types/(?P\d+)/front-panel-ports/delete/$', views.FrontPanelPortTemplateBulkDeleteView.as_view(), name='devicetype_delete_frontpanelport'), + # Front port templates + url(r'^device-types/(?P\d+)/front-ports/add/$', views.FrontPortTemplateCreateView.as_view(), name='devicetype_add_frontport'), + url(r'^device-types/(?P\d+)/front-ports/delete/$', views.FrontPortTemplateBulkDeleteView.as_view(), name='devicetype_delete_frontport'), - # Front panel port templates - url(r'^device-types/(?P\d+)/rear-panel-ports/add/$', views.RearPanelPortTemplateCreateView.as_view(), name='devicetype_add_rearpanelport'), - url(r'^device-types/(?P\d+)/rear-panel-ports/delete/$', views.RearPanelPortTemplateBulkDeleteView.as_view(), name='devicetype_delete_rearpanelport'), + # Rear port templates + url(r'^device-types/(?P\d+)/rear-ports/add/$', views.RearPortTemplateCreateView.as_view(), name='devicetype_add_rearport'), + url(r'^device-types/(?P\d+)/rear-ports/delete/$', views.RearPortTemplateBulkDeleteView.as_view(), name='devicetype_delete_rearport'), # Device bay templates url(r'^device-types/(?P\d+)/device-bays/add/$', views.DeviceBayTemplateCreateView.as_view(), name='devicetype_add_devicebay'), @@ -215,21 +215,21 @@ urlpatterns = [ url(r'^interfaces/(?P\d+)/changelog/$', ObjectChangeLogView.as_view(), name='interface_changelog', kwargs={'model': Interface}), url(r'^interfaces/rename/$', views.InterfaceBulkRenameView.as_view(), name='interface_bulk_rename'), - # Front panel ports - # url(r'^devices/front-panel-ports/add/$', views.DeviceBulkAddFrontPanelPortView.as_view(), name='device_bulk_add_frontpanelport'), - url(r'^devices/(?P\d+)/front-panel-ports/add/$', views.FrontPanelPortCreateView.as_view(), name='frontpanelport_add'), - url(r'^devices/(?P\d+)/front-panel-ports/delete/$', views.FrontPanelPortBulkDeleteView.as_view(), name='frontpanelport_bulk_delete'), - url(r'^front-panel-ports/(?P\d+)/edit/$', views.FrontPanelPortEditView.as_view(), name='frontpanelport_edit'), - url(r'^front-panel-ports/(?P\d+)/delete/$', views.FrontPanelPortDeleteView.as_view(), name='frontpanelport_delete'), - url(r'^front-panel-ports/rename/$', views.FrontPanelPortBulkRenameView.as_view(), name='frontpanelport_bulk_rename'), + # Front ports + # url(r'^devices/front-ports/add/$', views.DeviceBulkAddFrontPortView.as_view(), name='device_bulk_add_frontport'), + url(r'^devices/(?P\d+)/front-ports/add/$', views.FrontPortCreateView.as_view(), name='frontport_add'), + url(r'^devices/(?P\d+)/front-ports/delete/$', views.FrontPortBulkDeleteView.as_view(), name='frontport_bulk_delete'), + url(r'^front-ports/(?P\d+)/edit/$', views.FrontPortEditView.as_view(), name='frontport_edit'), + url(r'^front-ports/(?P\d+)/delete/$', views.FrontPortDeleteView.as_view(), name='frontport_delete'), + url(r'^front-ports/rename/$', views.FrontPortBulkRenameView.as_view(), name='frontport_bulk_rename'), - # Rear panel ports - # url(r'^devices/rear-panel-ports/add/$', views.DeviceBulkAddRearPanelPortView.as_view(), name='device_bulk_add_rearpanelport'), - url(r'^devices/(?P\d+)/rear-panel-ports/add/$', views.RearPanelPortCreateView.as_view(), name='rearpanelport_add'), - url(r'^devices/(?P\d+)/rear-panel-ports/delete/$', views.RearPanelPortBulkDeleteView.as_view(), name='rearpanelport_bulk_delete'), - url(r'^rear-panel-ports/(?P\d+)/edit/$', views.RearPanelPortEditView.as_view(), name='rearpanelport_edit'), - url(r'^rear-panel-ports/(?P\d+)/delete/$', views.RearPanelPortDeleteView.as_view(), name='rearpanelport_delete'), - url(r'^rear-panel-ports/rename/$', views.RearPanelPortBulkRenameView.as_view(), name='rearpanelport_bulk_rename'), + # Rear ports + # url(r'^devices/rear-ports/add/$', views.DeviceBulkAddRearPortView.as_view(), name='device_bulk_add_rearport'), + url(r'^devices/(?P\d+)/rear-ports/add/$', views.RearPortCreateView.as_view(), name='rearport_add'), + url(r'^devices/(?P\d+)/rear-ports/delete/$', views.RearPortBulkDeleteView.as_view(), name='rearport_bulk_delete'), + url(r'^rear-ports/(?P\d+)/edit/$', views.RearPortEditView.as_view(), name='rearport_edit'), + url(r'^rear-ports/(?P\d+)/delete/$', views.RearPortDeleteView.as_view(), name='rearport_delete'), + url(r'^rear-ports/rename/$', views.RearPortBulkRenameView.as_view(), name='rearport_bulk_rename'), # Device bays url(r'^devices/device-bays/add/$', views.DeviceBulkAddDeviceBayView.as_view(), name='device_bulk_add_devicebay'), diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 98dd04c16..25f62f612 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -29,9 +29,9 @@ from . import filters, forms, tables from .constants import CONNECTION_STATUS_CONNECTED from .models import ( Cable, ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay, - DeviceBayTemplate, DeviceRole, DeviceType, FrontPanelPort, FrontPanelPortTemplate, Interface, InterfaceTemplate, + DeviceBayTemplate, DeviceRole, DeviceType, FrontPort, FrontPortTemplate, Interface, InterfaceTemplate, Manufacturer, InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, - RackGroup, RackReservation, RackRole, RearPanelPort, RearPanelPortTemplate, Region, Site, VirtualChassis, + RackGroup, RackReservation, RackRole, RearPort, RearPortTemplate, Region, Site, VirtualChassis, ) @@ -557,12 +557,12 @@ class DeviceTypeView(View): ).filter(device_type=devicetype)), orderable=False ) - front_panel_port_table = tables.FrontPanelPortTemplateTable( - natsorted(FrontPanelPortTemplate.objects.filter(device_type=devicetype), key=attrgetter('name')), + front_port_table = tables.FrontPortTemplateTable( + natsorted(FrontPortTemplate.objects.filter(device_type=devicetype), key=attrgetter('name')), orderable=False ) - rear_panel_port_table = tables.RearPanelPortTemplateTable( - natsorted(RearPanelPortTemplate.objects.filter(device_type=devicetype), key=attrgetter('name')), + rear_port_table = tables.RearPortTemplateTable( + natsorted(RearPortTemplate.objects.filter(device_type=devicetype), key=attrgetter('name')), orderable=False ) devicebay_table = tables.DeviceBayTemplateTable( @@ -575,8 +575,8 @@ class DeviceTypeView(View): powerport_table.columns.show('pk') poweroutlet_table.columns.show('pk') interface_table.columns.show('pk') - front_panel_port_table.columns.show('pk') - rear_panel_port_table.columns.show('pk') + front_port_table.columns.show('pk') + rear_port_table.columns.show('pk') devicebay_table.columns.show('pk') return render(request, 'dcim/devicetype.html', { @@ -586,8 +586,8 @@ class DeviceTypeView(View): 'powerport_table': powerport_table, 'poweroutlet_table': poweroutlet_table, 'interface_table': interface_table, - 'front_panel_port_table': front_panel_port_table, - 'rear_panel_port_table': rear_panel_port_table, + 'front_port_table': front_port_table, + 'rear_port_table': rear_port_table, 'devicebay_table': devicebay_table, }) @@ -731,38 +731,38 @@ class InterfaceTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): table = tables.InterfaceTemplateTable -class FrontPanelPortTemplateCreateView(PermissionRequiredMixin, ComponentCreateView): - permission_required = 'dcim.add_frontpanelporttemplate' +class FrontPortTemplateCreateView(PermissionRequiredMixin, ComponentCreateView): + permission_required = 'dcim.add_frontporttemplate' parent_model = DeviceType parent_field = 'device_type' - model = FrontPanelPortTemplate - form = forms.FrontPanelPortTemplateCreateForm - model_form = forms.FrontPanelPortTemplateForm + model = FrontPortTemplate + form = forms.FrontPortTemplateCreateForm + model_form = forms.FrontPortTemplateForm template_name = 'dcim/device_component_add.html' -class FrontPanelPortTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): - permission_required = 'dcim.delete_frontpanelporttemplate' - queryset = FrontPanelPortTemplate.objects.all() +class FrontPortTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): + permission_required = 'dcim.delete_frontporttemplate' + queryset = FrontPortTemplate.objects.all() parent_model = DeviceType - table = tables.FrontPanelPortTemplateTable + table = tables.FrontPortTemplateTable -class RearPanelPortTemplateCreateView(PermissionRequiredMixin, ComponentCreateView): - permission_required = 'dcim.add_rearpanelporttemplate' +class RearPortTemplateCreateView(PermissionRequiredMixin, ComponentCreateView): + permission_required = 'dcim.add_rearporttemplate' parent_model = DeviceType parent_field = 'device_type' - model = RearPanelPortTemplate - form = forms.RearPanelPortTemplateCreateForm - model_form = forms.RearPanelPortTemplateForm + model = RearPortTemplate + form = forms.RearPortTemplateCreateForm + model_form = forms.RearPortTemplateForm template_name = 'dcim/device_component_add.html' -class RearPanelPortTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): - permission_required = 'dcim.delete_rearpanelporttemplate' - queryset = RearPanelPortTemplate.objects.all() +class RearPortTemplateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): + permission_required = 'dcim.delete_rearporttemplate' + queryset = RearPortTemplate.objects.all() parent_model = DeviceType - table = tables.RearPanelPortTemplateTable + table = tables.RearPortTemplateTable class DeviceBayTemplateCreateView(PermissionRequiredMixin, ComponentCreateView): @@ -903,11 +903,11 @@ class DeviceView(View): 'connected_endpoint__device', 'circuit_termination__circuit' ).prefetch_related('ip_addresses') - # Front panel ports - front_panel_ports = device.front_panel_ports.select_related('rear_port') + # Front ports + front_ports = device.front_ports.select_related('rear_port') - # Rear panel ports - rear_panel_ports = device.rear_panel_ports.all() + # Rear ports + rear_ports = device.rear_ports.all() # Device bays device_bays = natsorted( @@ -941,8 +941,8 @@ class DeviceView(View): 'poweroutlets': poweroutlets, 'interfaces': interfaces, 'device_bays': device_bays, - 'front_panel_ports': front_panel_ports, - 'rear_panel_ports': rear_panel_ports, + 'front_ports': front_ports, + 'rear_ports': rear_ports, 'services': services, 'secrets': secrets, 'vc_members': vc_members, @@ -1757,79 +1757,79 @@ class InterfaceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): # -# Front panel ports +# Front ports # -class FrontPanelPortCreateView(PermissionRequiredMixin, ComponentCreateView): - permission_required = 'dcim.add_frontpanelport' +class FrontPortCreateView(PermissionRequiredMixin, ComponentCreateView): + permission_required = 'dcim.add_frontport' parent_model = Device parent_field = 'device' - model = FrontPanelPort - form = forms.FrontPanelPortCreateForm - model_form = forms.FrontPanelPortForm + model = FrontPort + form = forms.FrontPortCreateForm + model_form = forms.FrontPortForm template_name = 'dcim/device_component_add.html' -class FrontPanelPortEditView(PermissionRequiredMixin, ObjectEditView): - permission_required = 'dcim.change_frontpanelport' - model = FrontPanelPort - model_form = forms.FrontPanelPortForm +class FrontPortEditView(PermissionRequiredMixin, ObjectEditView): + permission_required = 'dcim.change_frontport' + model = FrontPort + model_form = forms.FrontPortForm -class FrontPanelPortDeleteView(PermissionRequiredMixin, ObjectDeleteView): - permission_required = 'dcim.delete_frontpanelport' - model = FrontPanelPort +class FrontPortDeleteView(PermissionRequiredMixin, ObjectDeleteView): + permission_required = 'dcim.delete_frontport' + model = FrontPort -class FrontPanelPortBulkRenameView(PermissionRequiredMixin, BulkRenameView): - permission_required = 'dcim.change_frontpanelport' - queryset = FrontPanelPort.objects.all() - form = forms.FrontPanelPortBulkRenameForm +class FrontPortBulkRenameView(PermissionRequiredMixin, BulkRenameView): + permission_required = 'dcim.change_frontport' + queryset = FrontPort.objects.all() + form = forms.FrontPortBulkRenameForm -class FrontPanelPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): - permission_required = 'dcim.delete_frontpanelport' - queryset = FrontPanelPort.objects.all() +class FrontPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): + permission_required = 'dcim.delete_frontport' + queryset = FrontPort.objects.all() parent_model = Device - table = tables.FrontPanelPortTable + table = tables.FrontPortTable # -# Rear panel ports +# Rear ports # -class RearPanelPortCreateView(PermissionRequiredMixin, ComponentCreateView): - permission_required = 'dcim.add_rearpanelport' +class RearPortCreateView(PermissionRequiredMixin, ComponentCreateView): + permission_required = 'dcim.add_rearport' parent_model = Device parent_field = 'device' - model = RearPanelPort - form = forms.RearPanelPortCreateForm - model_form = forms.RearPanelPortForm + model = RearPort + form = forms.RearPortCreateForm + model_form = forms.RearPortForm template_name = 'dcim/device_component_add.html' -class RearPanelPortEditView(PermissionRequiredMixin, ObjectEditView): - permission_required = 'dcim.change_rearpanelport' - model = RearPanelPort - model_form = forms.RearPanelPortForm +class RearPortEditView(PermissionRequiredMixin, ObjectEditView): + permission_required = 'dcim.change_rearport' + model = RearPort + model_form = forms.RearPortForm -class RearPanelPortDeleteView(PermissionRequiredMixin, ObjectDeleteView): - permission_required = 'dcim.delete_rearpanelport' - model = RearPanelPort +class RearPortDeleteView(PermissionRequiredMixin, ObjectDeleteView): + permission_required = 'dcim.delete_rearport' + model = RearPort -class RearPanelPortBulkRenameView(PermissionRequiredMixin, BulkRenameView): - permission_required = 'dcim.change_rearpanelport' - queryset = RearPanelPort.objects.all() - form = forms.RearPanelPortBulkRenameForm +class RearPortBulkRenameView(PermissionRequiredMixin, BulkRenameView): + permission_required = 'dcim.change_rearport' + queryset = RearPort.objects.all() + form = forms.RearPortBulkRenameForm -class RearPanelPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): - permission_required = 'dcim.delete_rearpanelport' - queryset = RearPanelPort.objects.all() +class RearPortBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): + permission_required = 'dcim.delete_rearport' + queryset = RearPort.objects.all() parent_model = Device - table = tables.RearPanelPortTable + table = tables.RearPortTable # diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index 165a86595..7959f6cd8 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -689,7 +689,7 @@ {% endif %} {% endif %} - {% if front_panel_ports or device.device_type.is_patch_panel %} + {% if front_ports or device.device_type.is_patch_panel %}
{% csrf_token %}
@@ -699,7 +699,7 @@ - {% if perms.dcim.change_frontpanelport or perms.dcim.delete_frontpanelport %} + {% if perms.dcim.change_frontport or perms.dcim.delete_frontport %} {% endif %} @@ -710,8 +710,8 @@ - {% for frontpanelport in front_panel_ports %} - {% include 'dcim/inc/frontpanelport.html' %} + {% for frontport in front_ports %} + {% include 'dcim/inc/frontport.html' %} {% empty %} @@ -720,19 +720,19 @@
Name
— No front panel ports defined —
{% endif %} - {% if rear_panel_ports or device.device_type.is_patch_panel %} + {% if rear_ports or device.device_type.is_patch_panel %}
{% csrf_token %}
@@ -752,7 +752,7 @@ - {% if perms.dcim.change_rearpanelport or perms.dcim.delete_rearpanelport %} + {% if perms.dcim.change_rearport or perms.dcim.delete_rearport %} {% endif %} @@ -762,8 +762,8 @@ - {% for rearpanelport in rear_panel_ports %} - {% include 'dcim/inc/rearpanelport.html' %} + {% for rearport in rear_ports %} + {% include 'dcim/inc/rearport.html' %} {% empty %} @@ -772,19 +772,19 @@
Name
— No rear panel ports defined —
diff --git a/netbox/templates/dcim/inc/frontpanelport.html b/netbox/templates/dcim/inc/frontpanelport.html deleted file mode 100644 index bef4c24c7..000000000 --- a/netbox/templates/dcim/inc/frontpanelport.html +++ /dev/null @@ -1,25 +0,0 @@ - - {% if perms.dcim.change_frontpanelport or perms.dcim.delete_frontpanelport %} - - - - {% endif %} - - {{ frontpanelport }} - - {{ frontpanelport.get_type_display }} - {{ frontpanelport.rear_port }} - {{ frontpanelport.rear_port_position }} - - {% if perms.dcim.change_frontpanelport %} - - - - {% endif %} - {% if perms.dcim.delete_frontpanelport %} - - - - {% endif %} - - diff --git a/netbox/templates/dcim/inc/frontport.html b/netbox/templates/dcim/inc/frontport.html new file mode 100644 index 000000000..afa7e8764 --- /dev/null +++ b/netbox/templates/dcim/inc/frontport.html @@ -0,0 +1,25 @@ + + {% if perms.dcim.change_frontport or perms.dcim.delete_frontport %} + + + + {% endif %} + + {{ frontport }} + + {{ frontport.get_type_display }} + {{ frontport.rear_port }} + {{ frontport.rear_port_position }} + + {% if perms.dcim.change_frontport %} + + + + {% endif %} + {% if perms.dcim.delete_frontport %} + + + + {% endif %} + + diff --git a/netbox/templates/dcim/inc/rearpanelport.html b/netbox/templates/dcim/inc/rearpanelport.html deleted file mode 100644 index a781de727..000000000 --- a/netbox/templates/dcim/inc/rearpanelport.html +++ /dev/null @@ -1,24 +0,0 @@ - - {% if perms.dcim.change_rearpanelport or perms.dcim.delete_rearpanelport %} - - - - {% endif %} - - {{ rearpanelport }} - - {{ rearpanelport.get_type_display }} - {{ rearpanelport.positions }} - - {% if perms.dcim.change_rearpanelport %} - - - - {% endif %} - {% if perms.dcim.delete_rearpanelport %} - - - - {% endif %} - - diff --git a/netbox/templates/dcim/inc/rearport.html b/netbox/templates/dcim/inc/rearport.html new file mode 100644 index 000000000..e4610e4a5 --- /dev/null +++ b/netbox/templates/dcim/inc/rearport.html @@ -0,0 +1,24 @@ + + {% if perms.dcim.change_rearport or perms.dcim.delete_rearport %} + + + + {% endif %} + + {{ rearport }} + + {{ rearport.get_type_display }} + {{ rearport.positions }} + + {% if perms.dcim.change_rearport %} + + + + {% endif %} + {% if perms.dcim.delete_rearport %} + + + + {% endif %} + +