Przeglądaj źródła

Renamed PowerPort.power_outlet to connected_endpoint

Jeremy Stretch 7 lat temu
rodzic
commit
2ec8dc8319

+ 6 - 6
netbox/dcim/api/serializers.py

@@ -558,8 +558,8 @@ class PowerOutletSerializer(TaggitSerializer, ValidatedModelSerializer):
 
 
     class Meta:
     class Meta:
         model = PowerOutlet
         model = PowerOutlet
-        fields = ['id', 'device', 'name', 'connected_port', 'tags']
-        read_only_fields = ['connected_port']
+        fields = ['id', 'device', 'name', 'connected_endpoint', 'tags']
+        read_only_fields = ['connected_endpoint']
 
 
 
 
 class NestedPowerOutletSerializer(WritableNestedSerializer):
 class NestedPowerOutletSerializer(WritableNestedSerializer):
@@ -572,7 +572,7 @@ class NestedPowerOutletSerializer(WritableNestedSerializer):
         fields = ['id', 'url', 'device', 'name', 'is_connected']
         fields = ['id', 'url', 'device', 'name', 'is_connected']
 
 
     def get_is_connected(self, obj):
     def get_is_connected(self, obj):
-        return hasattr(obj, 'connected_port') and obj.connected_port is not None
+        return hasattr(obj, 'connected_endpoint') and obj.connected_endpoint is not None
 
 
 
 
 #
 #
@@ -581,12 +581,12 @@ class NestedPowerOutletSerializer(WritableNestedSerializer):
 
 
 class PowerPortSerializer(TaggitSerializer, ValidatedModelSerializer):
 class PowerPortSerializer(TaggitSerializer, ValidatedModelSerializer):
     device = NestedDeviceSerializer()
     device = NestedDeviceSerializer()
-    power_outlet = NestedPowerOutletSerializer(required=False, allow_null=True)
+    connected_endpoint = NestedPowerOutletSerializer(required=False, allow_null=True)
     tags = TagListSerializerField(required=False)
     tags = TagListSerializerField(required=False)
 
 
     class Meta:
     class Meta:
         model = PowerPort
         model = PowerPort
-        fields = ['id', 'device', 'name', 'power_outlet', 'connection_status', 'tags']
+        fields = ['id', 'device', 'name', 'connected_endpoint', 'connection_status', 'tags']
 
 
 
 
 class NestedPowerPortSerializer(TaggitSerializer, ValidatedModelSerializer):
 class NestedPowerPortSerializer(TaggitSerializer, ValidatedModelSerializer):
@@ -599,7 +599,7 @@ class NestedPowerPortSerializer(TaggitSerializer, ValidatedModelSerializer):
         fields = ['id', 'url', 'device', 'name', 'is_connected']
         fields = ['id', 'url', 'device', 'name', 'is_connected']
 
 
     def get_is_connected(self, obj):
     def get_is_connected(self, obj):
-        return obj.power_outlet is not None
+        return obj.connected_endpoint is not None
 
 
 
 
 #
 #

+ 12 - 4
netbox/dcim/api/views.py

@@ -343,13 +343,13 @@ class ConsoleServerPortViewSet(ModelViewSet):
 
 
 
 
 class PowerPortViewSet(ModelViewSet):
 class PowerPortViewSet(ModelViewSet):
-    queryset = PowerPort.objects.select_related('device', 'power_outlet__device').prefetch_related('tags')
+    queryset = PowerPort.objects.select_related('device', 'connected_endpoint__device').prefetch_related('tags')
     serializer_class = serializers.PowerPortSerializer
     serializer_class = serializers.PowerPortSerializer
     filter_class = filters.PowerPortFilter
     filter_class = filters.PowerPortFilter
 
 
 
 
 class PowerOutletViewSet(ModelViewSet):
 class PowerOutletViewSet(ModelViewSet):
-    queryset = PowerOutlet.objects.select_related('device', 'connected_port__device').prefetch_related('tags')
+    queryset = PowerOutlet.objects.select_related('device', 'connected_endpoint__device').prefetch_related('tags')
     serializer_class = serializers.PowerOutletSerializer
     serializer_class = serializers.PowerOutletSerializer
     filter_class = filters.PowerOutletFilter
     filter_class = filters.PowerOutletFilter
 
 
@@ -399,13 +399,21 @@ class InventoryItemViewSet(ModelViewSet):
 #
 #
 
 
 class ConsoleConnectionViewSet(ListModelMixin, GenericViewSet):
 class ConsoleConnectionViewSet(ListModelMixin, GenericViewSet):
-    queryset = ConsolePort.objects.select_related('device', 'connected_endpoint__device').filter(connected_endpoint__isnull=False)
+    queryset = ConsolePort.objects.select_related(
+        'device', 'connected_endpoint__device'
+    ).filter(
+        connected_endpoint__isnull=False
+    )
     serializer_class = serializers.ConsolePortSerializer
     serializer_class = serializers.ConsolePortSerializer
     filter_class = filters.ConsoleConnectionFilter
     filter_class = filters.ConsoleConnectionFilter
 
 
 
 
 class PowerConnectionViewSet(ListModelMixin, GenericViewSet):
 class PowerConnectionViewSet(ListModelMixin, GenericViewSet):
-    queryset = PowerPort.objects.select_related('device', 'power_outlet__device').filter(power_outlet__isnull=False)
+    queryset = PowerPort.objects.select_related(
+        'device', 'connected_endpoint__device'
+    ).filter(
+        connected_endpoint__isnull=False
+    )
     serializer_class = serializers.PowerPortSerializer
     serializer_class = serializers.PowerPortSerializer
     filter_class = filters.PowerConnectionFilter
     filter_class = filters.PowerConnectionFilter
 
 

+ 2 - 2
netbox/dcim/filters.py

@@ -831,14 +831,14 @@ class PowerConnectionFilter(django_filters.FilterSet):
     def filter_site(self, queryset, name, value):
     def filter_site(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
             return queryset
             return queryset
-        return queryset.filter(power_outlet__device__site__slug=value)
+        return queryset.filter(connected_endpoint__device__site__slug=value)
 
 
     def filter_device(self, queryset, name, value):
     def filter_device(self, queryset, name, value):
         if not value.strip():
         if not value.strip():
             return queryset
             return queryset
         return queryset.filter(
         return queryset.filter(
             Q(device__name__icontains=value) |
             Q(device__name__icontains=value) |
-            Q(power_outlet__device__name__icontains=value)
+            Q(connected_endpoint__device__name__icontains=value)
         )
         )
 
 
 
 

+ 25 - 25
netbox/dcim/fixtures/dcim.json

@@ -2685,7 +2685,7 @@
     "fields": {
     "fields": {
         "device": 1,
         "device": 1,
         "name": "PEM0",
         "name": "PEM0",
-        "power_outlet": 25,
+        "connected_endpoint": 25,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2695,7 +2695,7 @@
     "fields": {
     "fields": {
         "device": 1,
         "device": 1,
         "name": "PEM1",
         "name": "PEM1",
-        "power_outlet": 49,
+        "connected_endpoint": 49,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2705,7 +2705,7 @@
     "fields": {
     "fields": {
         "device": 1,
         "device": 1,
         "name": "PEM2",
         "name": "PEM2",
-        "power_outlet": null,
+        "connected_endpoint": null,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2715,7 +2715,7 @@
     "fields": {
     "fields": {
         "device": 1,
         "device": 1,
         "name": "PEM3",
         "name": "PEM3",
-        "power_outlet": null,
+        "connected_endpoint": null,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2725,7 +2725,7 @@
     "fields": {
     "fields": {
         "device": 2,
         "device": 2,
         "name": "PEM0",
         "name": "PEM0",
-        "power_outlet": 26,
+        "connected_endpoint": 26,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2735,7 +2735,7 @@
     "fields": {
     "fields": {
         "device": 2,
         "device": 2,
         "name": "PEM1",
         "name": "PEM1",
-        "power_outlet": 50,
+        "connected_endpoint": 50,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2745,7 +2745,7 @@
     "fields": {
     "fields": {
         "device": 2,
         "device": 2,
         "name": "PEM2",
         "name": "PEM2",
-        "power_outlet": null,
+        "connected_endpoint": null,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2755,7 +2755,7 @@
     "fields": {
     "fields": {
         "device": 2,
         "device": 2,
         "name": "PEM3",
         "name": "PEM3",
-        "power_outlet": null,
+        "connected_endpoint": null,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2765,7 +2765,7 @@
     "fields": {
     "fields": {
         "device": 4,
         "device": 4,
         "name": "PSU0",
         "name": "PSU0",
-        "power_outlet": 28,
+        "connected_endpoint": 28,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2775,7 +2775,7 @@
     "fields": {
     "fields": {
         "device": 4,
         "device": 4,
         "name": "PSU1",
         "name": "PSU1",
-        "power_outlet": 52,
+        "connected_endpoint": 52,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2785,7 +2785,7 @@
     "fields": {
     "fields": {
         "device": 5,
         "device": 5,
         "name": "PSU0",
         "name": "PSU0",
-        "power_outlet": 56,
+        "connected_endpoint": 56,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2795,7 +2795,7 @@
     "fields": {
     "fields": {
         "device": 5,
         "device": 5,
         "name": "PSU1",
         "name": "PSU1",
-        "power_outlet": 32,
+        "connected_endpoint": 32,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2805,7 +2805,7 @@
     "fields": {
     "fields": {
         "device": 3,
         "device": 3,
         "name": "PSU0",
         "name": "PSU0",
-        "power_outlet": 27,
+        "connected_endpoint": 27,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2815,7 +2815,7 @@
     "fields": {
     "fields": {
         "device": 3,
         "device": 3,
         "name": "PSU1",
         "name": "PSU1",
-        "power_outlet": 51,
+        "connected_endpoint": 51,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2825,7 +2825,7 @@
     "fields": {
     "fields": {
         "device": 7,
         "device": 7,
         "name": "PEM0",
         "name": "PEM0",
-        "power_outlet": 53,
+        "connected_endpoint": 53,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2835,7 +2835,7 @@
     "fields": {
     "fields": {
         "device": 7,
         "device": 7,
         "name": "PEM1",
         "name": "PEM1",
-        "power_outlet": 29,
+        "connected_endpoint": 29,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2845,7 +2845,7 @@
     "fields": {
     "fields": {
         "device": 7,
         "device": 7,
         "name": "PEM2",
         "name": "PEM2",
-        "power_outlet": null,
+        "connected_endpoint": null,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2855,7 +2855,7 @@
     "fields": {
     "fields": {
         "device": 7,
         "device": 7,
         "name": "PEM3",
         "name": "PEM3",
-        "power_outlet": null,
+        "connected_endpoint": null,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2865,7 +2865,7 @@
     "fields": {
     "fields": {
         "device": 8,
         "device": 8,
         "name": "PEM0",
         "name": "PEM0",
-        "power_outlet": 54,
+        "connected_endpoint": 54,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2875,7 +2875,7 @@
     "fields": {
     "fields": {
         "device": 8,
         "device": 8,
         "name": "PEM1",
         "name": "PEM1",
-        "power_outlet": 30,
+        "connected_endpoint": 30,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2885,7 +2885,7 @@
     "fields": {
     "fields": {
         "device": 8,
         "device": 8,
         "name": "PEM2",
         "name": "PEM2",
-        "power_outlet": null,
+        "connected_endpoint": null,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2895,7 +2895,7 @@
     "fields": {
     "fields": {
         "device": 8,
         "device": 8,
         "name": "PEM3",
         "name": "PEM3",
-        "power_outlet": null,
+        "connected_endpoint": null,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2905,7 +2905,7 @@
     "fields": {
     "fields": {
         "device": 6,
         "device": 6,
         "name": "PSU0",
         "name": "PSU0",
-        "power_outlet": 55,
+        "connected_endpoint": 55,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2915,7 +2915,7 @@
     "fields": {
     "fields": {
         "device": 6,
         "device": 6,
         "name": "PSU1",
         "name": "PSU1",
-        "power_outlet": 31,
+        "connected_endpoint": 31,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },
@@ -2925,7 +2925,7 @@
     "fields": {
     "fields": {
         "device": 9,
         "device": 9,
         "name": "PSU",
         "name": "PSU",
-        "power_outlet": null,
+        "connected_endpoint": null,
         "connection_status": true
         "connection_status": true
     }
     }
 },
 },

+ 16 - 16
netbox/dcim/forms.py

@@ -1570,7 +1570,7 @@ class PowerConnectionCSVForm(forms.ModelForm):
             'invalid_choice': 'PDU not found.',
             'invalid_choice': 'PDU not found.',
         }
         }
     )
     )
-    power_outlet = forms.CharField(
+    connected_endpoint = forms.CharField(
         help_text='Power outlet name'
         help_text='Power outlet name'
     )
     )
     device = FlexibleModelChoiceField(
     device = FlexibleModelChoiceField(
@@ -1591,7 +1591,7 @@ class PowerConnectionCSVForm(forms.ModelForm):
 
 
     class Meta:
     class Meta:
         model = PowerPort
         model = PowerPort
-        fields = ['pdu', 'power_outlet', 'device', 'power_port', 'connection_status']
+        fields = ['pdu', 'connected_endpoint', 'device', 'power_port', 'connection_status']
 
 
     def clean_power_port(self):
     def clean_power_port(self):
 
 
@@ -1605,7 +1605,7 @@ class PowerConnectionCSVForm(forms.ModelForm):
                 device=self.cleaned_data['device'], name=power_port_name
                 device=self.cleaned_data['device'], name=power_port_name
             )
             )
             # Check if the power port is already connected
             # Check if the power port is already connected
-            if powerport.power_outlet is not None:
+            if powerport.connected_endpoint is not None:
                 raise forms.ValidationError("{} {} is already connected".format(
                 raise forms.ValidationError("{} {} is already connected".format(
                     self.cleaned_data['device'], power_port_name
                     self.cleaned_data['device'], power_port_name
                 ))
                 ))
@@ -1617,28 +1617,28 @@ class PowerConnectionCSVForm(forms.ModelForm):
         self.instance = powerport
         self.instance = powerport
         return powerport
         return powerport
 
 
-    def clean_power_outlet(self):
+    def clean_connected_endpoint(self):
 
 
-        power_outlet_name = self.cleaned_data.get('power_outlet')
-        if not self.cleaned_data.get('pdu') or not power_outlet_name:
+        poweroutlet_name = self.cleaned_data.get('connected_endpoint')
+        if not self.cleaned_data.get('pdu') or not poweroutlet_name:
             return None
             return None
 
 
         try:
         try:
             # Retrieve power outlet by name
             # Retrieve power outlet by name
-            power_outlet = PowerOutlet.objects.get(
-                device=self.cleaned_data['pdu'], name=power_outlet_name
+            poweroutlet = PowerOutlet.objects.get(
+                device=self.cleaned_data['pdu'], name=poweroutlet_name
             )
             )
             # Check if the power outlet is already connected
             # Check if the power outlet is already connected
-            if PowerPort.objects.filter(power_outlet=power_outlet).count():
+            if PowerPort.objects.filter(connected_endpoint=poweroutlet).count():
                 raise forms.ValidationError("{} {} is already connected".format(
                 raise forms.ValidationError("{} {} is already connected".format(
-                    self.cleaned_data['pdu'], power_outlet_name
+                    self.cleaned_data['pdu'], poweroutlet_name
                 ))
                 ))
         except PowerOutlet.DoesNotExist:
         except PowerOutlet.DoesNotExist:
             raise forms.ValidationError("Invalid power outlet ({} {})".format(
             raise forms.ValidationError("Invalid power outlet ({} {})".format(
-                self.cleaned_data['pdu'], power_outlet_name
+                self.cleaned_data['pdu'], poweroutlet_name
             ))
             ))
 
 
-        return power_outlet
+        return poweroutlet
 
 
 
 
 class PowerPortConnectionForm(BootstrapMixin, ChainedFieldsMixin, forms.ModelForm):
 class PowerPortConnectionForm(BootstrapMixin, ChainedFieldsMixin, forms.ModelForm):
@@ -1672,7 +1672,7 @@ class PowerPortConnectionForm(BootstrapMixin, ChainedFieldsMixin, forms.ModelFor
         widget=APISelect(
         widget=APISelect(
             api_url='/api/dcim/devices/?site_id={{site}}&rack_id={{rack}}&is_pdu=True',
             api_url='/api/dcim/devices/?site_id={{site}}&rack_id={{rack}}&is_pdu=True',
             display_field='display_name',
             display_field='display_name',
-            attrs={'filter-for': 'power_outlet'}
+            attrs={'filter-for': 'connected_endpoint'}
         )
         )
     )
     )
     livesearch = forms.CharField(
     livesearch = forms.CharField(
@@ -1684,7 +1684,7 @@ class PowerPortConnectionForm(BootstrapMixin, ChainedFieldsMixin, forms.ModelFor
             field_to_update='pdu'
             field_to_update='pdu'
         )
         )
     )
     )
-    power_outlet = ChainedModelChoiceField(
+    connected_endpoint = ChainedModelChoiceField(
         queryset=PowerOutlet.objects.all(),
         queryset=PowerOutlet.objects.all(),
         chains=(
         chains=(
             ('device', 'pdu'),
             ('device', 'pdu'),
@@ -1698,9 +1698,9 @@ class PowerPortConnectionForm(BootstrapMixin, ChainedFieldsMixin, forms.ModelFor
 
 
     class Meta:
     class Meta:
         model = PowerPort
         model = PowerPort
-        fields = ['site', 'rack', 'pdu', 'livesearch', 'power_outlet', 'connection_status']
+        fields = ['site', 'rack', 'pdu', 'livesearch', 'connected_endpoint', 'connection_status']
         labels = {
         labels = {
-            'power_outlet': 'Outlet',
+            'connected_endpoint': 'Outlet',
             'connection_status': 'Status',
             'connection_status': 'Status',
         }
         }
 
 

+ 20 - 3
netbox/dcim/migrations/0066_cables.py

@@ -42,13 +42,13 @@ def power_connections_to_cables(apps, schema_editor):
     poweroutlet_type = ContentType.objects.get_for_model(PowerOutlet)
     poweroutlet_type = ContentType.objects.get_for_model(PowerOutlet)
 
 
     # Create a new Cable instance from each power connection
     # Create a new Cable instance from each power connection
-    for powerport in PowerPort.objects.filter(power_outlet__isnull=False):
+    for powerport in PowerPort.objects.filter(connected_endpoint__isnull=False):
         c = Cable()
         c = Cable()
         # We have to assign GFK fields manually because we're inside a migration.
         # We have to assign GFK fields manually because we're inside a migration.
         c.endpoint_a_type = powerport_type
         c.endpoint_a_type = powerport_type
         c.endpoint_a_id = powerport.id
         c.endpoint_a_id = powerport.id
         c.endpoint_b_type = poweroutlet_type
         c.endpoint_b_type = poweroutlet_type
-        c.endpoint_b_id = powerport.power_outlet_id
+        c.endpoint_b_id = powerport.connected_endpoint_id
         c.connection_status = powerport.connection_status
         c.connection_status = powerport.connection_status
         c.save()
         c.save()
 
 
@@ -108,7 +108,7 @@ class Migration(migrations.Migration):
             unique_together={('endpoint_b_type', 'endpoint_b_id'), ('endpoint_a_type', 'endpoint_a_id')},
             unique_together={('endpoint_b_type', 'endpoint_b_id'), ('endpoint_a_type', 'endpoint_a_id')},
         ),
         ),
 
 
-        # Rename model fields
+        # Alter console port models
         migrations.RenameField(
         migrations.RenameField(
             model_name='consoleport',
             model_name='consoleport',
             old_name='cs_port',
             old_name='cs_port',
@@ -125,6 +125,23 @@ class Migration(migrations.Migration):
             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleserverports', to='dcim.Device'),
             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleserverports', to='dcim.Device'),
         ),
         ),
 
 
+        # Alter power port models
+        migrations.RenameField(
+            model_name='powerport',
+            old_name='power_outlet',
+            new_name='connected_endpoint'
+        ),
+        migrations.AlterField(
+            model_name='powerport',
+            name='connected_endpoint',
+            field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='connected_endpoint', to='dcim.PowerOutlet'),
+        ),
+        migrations.AlterField(
+            model_name='poweroutlet',
+            name='device',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='poweroutlets', to='dcim.Device'),
+        ),
+
         # Copy console/power/interface connections as Cables
         # Copy console/power/interface connections as Cables
         migrations.RunPython(console_connections_to_cables),
         migrations.RunPython(console_connections_to_cables),
         migrations.RunPython(power_connections_to_cables),
         migrations.RunPython(power_connections_to_cables),

+ 6 - 6
netbox/dcim/models.py

@@ -1732,10 +1732,10 @@ class PowerPort(ComponentModel):
     name = models.CharField(
     name = models.CharField(
         max_length=50
         max_length=50
     )
     )
-    power_outlet = models.OneToOneField(
+    connected_endpoint = models.OneToOneField(
         to='dcim.PowerOutlet',
         to='dcim.PowerOutlet',
         on_delete=models.SET_NULL,
         on_delete=models.SET_NULL,
-        related_name='connected_port',
+        related_name='connected_endpoint',
         blank=True,
         blank=True,
         null=True
         null=True
     )
     )
@@ -1746,7 +1746,7 @@ class PowerPort(ComponentModel):
 
 
     tags = TaggableManager()
     tags = TaggableManager()
 
 
-    csv_headers = ['pdu', 'power_outlet', 'device', 'power_port', 'connection_status']
+    csv_headers = ['pdu', 'connected_endpoint', 'device', 'power_port', 'connection_status']
 
 
     class Meta:
     class Meta:
         ordering = ['device', 'name']
         ordering = ['device', 'name']
@@ -1760,8 +1760,8 @@ class PowerPort(ComponentModel):
 
 
     def to_csv(self):
     def to_csv(self):
         return (
         return (
-            self.power_outlet.device.identifier if self.power_outlet else None,
-            self.power_outlet.name if self.power_outlet else None,
+            self.connected_endpoint.device.identifier if self.connected_endpoint else None,
+            self.connected_endpoint.name if self.connected_endpoint else None,
             self.device.identifier,
             self.device.identifier,
             self.name,
             self.name,
             self.get_connection_status_display(),
             self.get_connection_status_display(),
@@ -1789,7 +1789,7 @@ class PowerOutlet(ComponentModel):
     device = models.ForeignKey(
     device = models.ForeignKey(
         to='dcim.Device',
         to='dcim.Device',
         on_delete=models.CASCADE,
         on_delete=models.CASCADE,
-        related_name='power_outlets'
+        related_name='poweroutlets'
     )
     )
     name = models.CharField(
     name = models.CharField(
         max_length=50
         max_length=50

+ 8 - 4
netbox/dcim/tables.py

@@ -638,15 +638,19 @@ class ConsoleConnectionTable(BaseTable):
 
 
 
 
 class PowerConnectionTable(BaseTable):
 class PowerConnectionTable(BaseTable):
-    pdu = tables.LinkColumn('dcim:device', accessor=Accessor('power_outlet.device'),
-                            args=[Accessor('power_outlet.device.pk')], verbose_name='PDU')
-    power_outlet = tables.Column(verbose_name='Outlet')
+    pdu = tables.LinkColumn(
+        'dcim:device',
+        accessor=Accessor('connected_endpoint.device'),
+        args=[Accessor('connected_endpoint.device.pk')],
+        verbose_name='PDU'
+    )
+    connected_endpoint = tables.Column(verbose_name='Outlet')
     device = tables.LinkColumn('dcim:device', args=[Accessor('device.pk')], verbose_name='Device')
     device = tables.LinkColumn('dcim:device', args=[Accessor('device.pk')], verbose_name='Device')
     name = tables.Column(verbose_name='Power Port')
     name = tables.Column(verbose_name='Power Port')
 
 
     class Meta(BaseTable.Meta):
     class Meta(BaseTable.Meta):
         model = PowerPort
         model = PowerPort
-        fields = ('pdu', 'power_outlet', 'device', 'name')
+        fields = ('pdu', 'connected_endpoint', 'device', 'name')
 
 
 
 
 class InterfaceConnectionTable(BaseTable):
 class InterfaceConnectionTable(BaseTable):

+ 8 - 8
netbox/dcim/tests/test_api.py

@@ -2231,7 +2231,7 @@ class PowerPortTest(APITestCase):
         data = {
         data = {
             'device': self.device.pk,
             'device': self.device.pk,
             'name': 'Test Power Port X',
             'name': 'Test Power Port X',
-            'power_outlet': poweroutlet.pk,
+            'connected_endpoint': poweroutlet.pk,
         }
         }
 
 
         url = reverse('dcim-api:powerport-detail', kwargs={'pk': self.powerport1.pk})
         url = reverse('dcim-api:powerport-detail', kwargs={'pk': self.powerport1.pk})
@@ -2241,7 +2241,7 @@ class PowerPortTest(APITestCase):
         self.assertEqual(PowerPort.objects.count(), 3)
         self.assertEqual(PowerPort.objects.count(), 3)
         powerport1 = PowerPort.objects.get(pk=response.data['id'])
         powerport1 = PowerPort.objects.get(pk=response.data['id'])
         self.assertEqual(powerport1.name, data['name'])
         self.assertEqual(powerport1.name, data['name'])
-        self.assertEqual(powerport1.power_outlet_id, data['power_outlet'])
+        self.assertEqual(powerport1.connected_endpoint_id, data['connected_endpoint'])
 
 
     def test_delete_powerport(self):
     def test_delete_powerport(self):
 
 
@@ -2861,17 +2861,17 @@ class PowerConnectionTest(APITestCase):
         device2 = Device.objects.create(
         device2 = Device.objects.create(
             device_type=devicetype, device_role=devicerole, name='Test Device 2', site=site
             device_type=devicetype, device_role=devicerole, name='Test Device 2', site=site
         )
         )
-        power_outlet1 = PowerOutlet.objects.create(device=device1, name='Test Power Outlet 1')
-        power_outlet2 = PowerOutlet.objects.create(device=device1, name='Test Power Outlet 2')
-        power_outlet3 = PowerOutlet.objects.create(device=device1, name='Test Power Outlet 3')
+        poweroutlet1 = PowerOutlet.objects.create(device=device1, name='Test Power Outlet 1')
+        poweroutlet2 = PowerOutlet.objects.create(device=device1, name='Test Power Outlet 2')
+        poweroutlet3 = PowerOutlet.objects.create(device=device1, name='Test Power Outlet 3')
         PowerPort.objects.create(
         PowerPort.objects.create(
-            device=device2, power_outlet=power_outlet1, name='Test Power Port 1', connection_status=True
+            device=device2, connected_endpoint=poweroutlet1, name='Test Power Port 1', connection_status=True
         )
         )
         PowerPort.objects.create(
         PowerPort.objects.create(
-            device=device2, power_outlet=power_outlet2, name='Test Power Port 2', connection_status=True
+            device=device2, connected_endpoint=poweroutlet2, name='Test Power Port 2', connection_status=True
         )
         )
         PowerPort.objects.create(
         PowerPort.objects.create(
-            device=device2, power_outlet=power_outlet3, name='Test Power Port 3', connection_status=True
+            device=device2, connected_endpoint=poweroutlet3, name='Test Power Port 3', connection_status=True
         )
         )
 
 
     def test_list_powerconnections(self):
     def test_list_powerconnections(self):

+ 29 - 23
netbox/dcim/views.py

@@ -862,8 +862,9 @@ class PlatformBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 #
 #
 
 
 class DeviceListView(ObjectListView):
 class DeviceListView(ObjectListView):
-    queryset = Device.objects.select_related('device_type__manufacturer', 'device_role', 'tenant', 'site', 'rack',
-                                             'primary_ip4', 'primary_ip6')
+    queryset = Device.objects.select_related(
+        'device_type__manufacturer', 'device_role', 'tenant', 'site', 'rack', 'primary_ip4', 'primary_ip6'
+    )
     filter = filters.DeviceFilter
     filter = filters.DeviceFilter
     filter_form = forms.DeviceFilterForm
     filter_form = forms.DeviceFilterForm
     table = tables.DeviceDetailTable
     table = tables.DeviceDetailTable
@@ -894,11 +895,11 @@ class DeviceView(View):
 
 
         # Power ports
         # Power ports
         power_ports = natsorted(
         power_ports = natsorted(
-            PowerPort.objects.filter(device=device).select_related('power_outlet__device'), key=attrgetter('name')
+            PowerPort.objects.filter(device=device).select_related('connected_endpoint__device'), key=attrgetter('name')
         )
         )
 
 
         # Power outlets
         # Power outlets
-        power_outlets = PowerOutlet.objects.filter(device=device).select_related('connected_port')
+        poweroutlets = PowerOutlet.objects.filter(device=device).select_related('connected_endpoint')
 
 
         # Interfaces
         # Interfaces
         interfaces = device.vc_interfaces.order_naturally(
         interfaces = device.vc_interfaces.order_naturally(
@@ -943,7 +944,7 @@ class DeviceView(View):
             'console_ports': console_ports,
             'console_ports': console_ports,
             'consoleserverports': consoleserverports,
             'consoleserverports': consoleserverports,
             'power_ports': power_ports,
             'power_ports': power_ports,
-            'power_outlets': power_outlets,
+            'poweroutlets': poweroutlets,
             'interfaces': interfaces,
             'interfaces': interfaces,
             'device_bays': device_bays,
             'device_bays': device_bays,
             'front_panel_ports': front_panel_ports,
             'front_panel_ports': front_panel_ports,
@@ -1419,9 +1420,9 @@ class PowerPortConnectView(PermissionRequiredMixin, View):
                 powerport.device.get_absolute_url(),
                 powerport.device.get_absolute_url(),
                 escape(powerport.device),
                 escape(powerport.device),
                 escape(powerport.name),
                 escape(powerport.name),
-                powerport.power_outlet.device.get_absolute_url(),
-                escape(powerport.power_outlet.device),
-                escape(powerport.power_outlet.name),
+                powerport.connected_endpoint.device.get_absolute_url(),
+                escape(powerport.connected_endpoint.device),
+                escape(powerport.connected_endpoint.name),
             )
             )
             messages.success(request, mark_safe(msg))
             messages.success(request, mark_safe(msg))
 
 
@@ -1442,7 +1443,7 @@ class PowerPortDisconnectView(PermissionRequiredMixin, View):
         powerport = get_object_or_404(PowerPort, pk=pk)
         powerport = get_object_or_404(PowerPort, pk=pk)
         form = ConfirmationForm()
         form = ConfirmationForm()
 
 
-        if not powerport.power_outlet:
+        if not powerport.connected_endpoint:
             messages.warning(
             messages.warning(
                 request, "Cannot disconnect power port {}: It is not connected to an outlet.".format(powerport)
                 request, "Cannot disconnect power port {}: It is not connected to an outlet.".format(powerport)
             )
             )
@@ -1461,17 +1462,17 @@ class PowerPortDisconnectView(PermissionRequiredMixin, View):
 
 
         if form.is_valid():
         if form.is_valid():
 
 
-            power_outlet = powerport.power_outlet
-            powerport.power_outlet = None
+            poweroutlet = powerport.connected_endpoint
+            powerport.connected_endpoint = None
             powerport.connection_status = None
             powerport.connection_status = None
             powerport.save()
             powerport.save()
             msg = 'Disconnected <a href="{}">{}</a> {} from <a href="{}">{}</a> {}'.format(
             msg = 'Disconnected <a href="{}">{}</a> {} from <a href="{}">{}</a> {}'.format(
                 powerport.device.get_absolute_url(),
                 powerport.device.get_absolute_url(),
                 escape(powerport.device),
                 escape(powerport.device),
                 escape(powerport.name),
                 escape(powerport.name),
-                power_outlet.device.get_absolute_url(),
-                escape(power_outlet.device),
-                escape(power_outlet.name),
+                poweroutlet.device.get_absolute_url(),
+                escape(poweroutlet.device),
+                escape(poweroutlet.name),
             )
             )
             messages.success(request, mark_safe(msg))
             messages.success(request, mark_safe(msg))
 
 
@@ -1549,7 +1550,7 @@ class PowerOutletConnectView(PermissionRequiredMixin, View):
 
 
         if form.is_valid():
         if form.is_valid():
             powerport = form.cleaned_data['port']
             powerport = form.cleaned_data['port']
-            powerport.power_outlet = poweroutlet
+            powerport.connected_endpoint = poweroutlet
             powerport.connection_status = form.cleaned_data['connection_status']
             powerport.connection_status = form.cleaned_data['connection_status']
             powerport.save()
             powerport.save()
             msg = 'Connected <a href="{}">{}</a> {} to <a href="{}">{}</a> {}'.format(
             msg = 'Connected <a href="{}">{}</a> {} to <a href="{}">{}</a> {}'.format(
@@ -1579,7 +1580,7 @@ class PowerOutletDisconnectView(PermissionRequiredMixin, View):
         poweroutlet = get_object_or_404(PowerOutlet, pk=pk)
         poweroutlet = get_object_or_404(PowerOutlet, pk=pk)
         form = ConfirmationForm()
         form = ConfirmationForm()
 
 
-        if not hasattr(poweroutlet, 'connected_port'):
+        if not hasattr(poweroutlet, 'connected_endpoint'):
             messages.warning(
             messages.warning(
                 request, "Cannot disconnect power outlet {}: Nothing is connected to it.".format(poweroutlet)
                 request, "Cannot disconnect power outlet {}: Nothing is connected to it.".format(poweroutlet)
             )
             )
@@ -1598,8 +1599,8 @@ class PowerOutletDisconnectView(PermissionRequiredMixin, View):
 
 
         if form.is_valid():
         if form.is_valid():
 
 
-            powerport = poweroutlet.connected_port
-            powerport.power_outlet = None
+            powerport = poweroutlet.connected_endpoint
+            powerport.connected_endpoint = None
             powerport.connection_status = None
             powerport.connection_status = None
             powerport.save()
             powerport.save()
             msg = 'Disconnected <a href="{}">{}</a> {} from <a href="{}">{}</a> {}'.format(
             msg = 'Disconnected <a href="{}">{}</a> {} from <a href="{}">{}</a> {}'.format(
@@ -1643,9 +1644,9 @@ class PowerOutletBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView)
     model = PowerOutlet
     model = PowerOutlet
     form = forms.PowerOutletBulkDisconnectForm
     form = forms.PowerOutletBulkDisconnectForm
 
 
-    def disconnect_objects(self, power_outlets):
-        return PowerPort.objects.filter(power_outlet__in=power_outlets).update(
-            power_outlet=None, connection_status=None
+    def disconnect_objects(self, poweroutlets):
+        return PowerPort.objects.filter(connected_endpoint__in=poweroutlets).update(
+            connected_endpoint=None, connection_status=None
         )
         )
 
 
 
 
@@ -2143,8 +2144,13 @@ class ConsoleConnectionsListView(ObjectListView):
 
 
 
 
 class PowerConnectionsListView(ObjectListView):
 class PowerConnectionsListView(ObjectListView):
-    queryset = PowerPort.objects.select_related('device', 'power_outlet__device').filter(power_outlet__isnull=False) \
-        .order_by('power_outlet__device__name', 'power_outlet__name')
+    queryset = PowerPort.objects.select_related(
+        'device', 'connected_endpoint__device'
+    ).filter(
+        connected_endpoint__isnull=False
+    ).order_by(
+        'connected_endpoint__device__name', 'connected_endpoint__name'
+    )
     filter = filters.PowerConnectionFilter
     filter = filters.PowerConnectionFilter
     filter_form = forms.PowerConnectionFilterForm
     filter_form = forms.PowerConnectionFilterForm
     table = tables.PowerConnectionTable
     table = tables.PowerConnectionTable

+ 3 - 5
netbox/extras/models.py

@@ -526,8 +526,7 @@ class TopologyMap(models.Model):
         from dcim.models import ConsolePort
         from dcim.models import ConsolePort
 
 
         # Add all console connections to the graph
         # Add all console connections to the graph
-        console_ports = ConsolePort.objects.filter(device__in=devices, connected_endpoint__device__in=devices)
-        for cp in console_ports:
+        for cp in ConsolePort.objects.filter(device__in=devices, connected_endpoint__device__in=devices):
             style = 'solid' if cp.connection_status == CONNECTION_STATUS_CONNECTED else 'dashed'
             style = 'solid' if cp.connection_status == CONNECTION_STATUS_CONNECTED else 'dashed'
             self.graph.edge(cp.connected_endpoint.device.name, cp.device.name, style=style)
             self.graph.edge(cp.connected_endpoint.device.name, cp.device.name, style=style)
 
 
@@ -536,10 +535,9 @@ class TopologyMap(models.Model):
         from dcim.models import PowerPort
         from dcim.models import PowerPort
 
 
         # Add all power connections to the graph
         # Add all power connections to the graph
-        power_ports = PowerPort.objects.filter(device__in=devices, power_outlet__device__in=devices)
-        for pp in power_ports:
+        for pp in PowerPort.objects.filter(device__in=devices, connected_endpoint__device__in=devices):
             style = 'solid' if pp.connection_status == CONNECTION_STATUS_CONNECTED else 'dashed'
             style = 'solid' if pp.connection_status == CONNECTION_STATUS_CONNECTED else 'dashed'
-            self.graph.edge(pp.power_outlet.device.name, pp.device.name, style=style)
+            self.graph.edge(pp.connected_endpoint.device.name, pp.device.name, style=style)
 
 
 
 
 #
 #

+ 1 - 1
netbox/netbox/views.py

@@ -168,7 +168,7 @@ class HomeView(View):
             'device_count': Device.objects.count(),
             'device_count': Device.objects.count(),
             'interface_connections_count': InterfaceConnection.objects.count(),
             'interface_connections_count': InterfaceConnection.objects.count(),
             'console_connections_count': ConsolePort.objects.filter(connected_endpoint__isnull=False).count(),
             'console_connections_count': ConsolePort.objects.filter(connected_endpoint__isnull=False).count(),
-            'power_connections_count': PowerPort.objects.filter(power_outlet__isnull=False).count(),
+            'power_connections_count': PowerPort.objects.filter(connected_endpoint__isnull=False).count(),
 
 
             # IPAM
             # IPAM
             'vrf_count': VRF.objects.count(),
             'vrf_count': VRF.objects.count(),

+ 4 - 4
netbox/templates/dcim/device.html

@@ -631,7 +631,7 @@
                     </form>
                     </form>
                 {% endif %}
                 {% endif %}
             {% endif %}
             {% endif %}
-            {% if power_outlets or device.device_type.is_pdu %}
+            {% if poweroutlets or device.device_type.is_pdu %}
                 {% if perms.dcim.delete_poweroutlet %}
                 {% if perms.dcim.delete_poweroutlet %}
                     <form method="post">
                     <form method="post">
                     {% csrf_token %}
                     {% csrf_token %}
@@ -652,7 +652,7 @@
                             </tr>
                             </tr>
                         </thead>
                         </thead>
                         <tbody>
                         <tbody>
-                            {% for po in power_outlets %}
+                            {% for po in poweroutlets %}
                                 {% include 'dcim/inc/poweroutlet.html' %}
                                 {% include 'dcim/inc/poweroutlet.html' %}
                             {% empty %}
                             {% empty %}
                                 <tr>
                                 <tr>
@@ -662,7 +662,7 @@
                         </tbody>
                         </tbody>
                     </table>
                     </table>
                     <div class="panel-footer">
                     <div class="panel-footer">
-                        {% if power_outlets and perms.dcim.change_powerport %}
+                        {% if poweroutlets and perms.dcim.change_powerport %}
                             <button type="submit" name="_rename" formaction="{% url 'dcim:poweroutlet_bulk_rename' %}?return_url={{ device.get_absolute_url }}" class="btn btn-warning btn-xs">
                             <button type="submit" name="_rename" formaction="{% url 'dcim:poweroutlet_bulk_rename' %}?return_url={{ device.get_absolute_url }}" class="btn btn-warning btn-xs">
                                 <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Rename
                                 <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Rename
                             </button>
                             </button>
@@ -670,7 +670,7 @@
                                 <span class="glyphicon glyphicon-resize-full" aria-hidden="true"></span> Disconnect
                                 <span class="glyphicon glyphicon-resize-full" aria-hidden="true"></span> Disconnect
                             </button>
                             </button>
                         {% endif %}
                         {% endif %}
-                        {% if power_outlets and perms.dcim.delete_poweroutlet %}
+                        {% if poweroutlets and perms.dcim.delete_poweroutlet %}
                             <button type="submit" formaction="{% url 'dcim:poweroutlet_bulk_delete' pk=device.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
                             <button type="submit" formaction="{% url 'dcim:poweroutlet_bulk_delete' pk=device.pk %}?return_url={{ device.get_absolute_url }}" class="btn btn-danger btn-xs">
                                 <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Delete
                                 <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Delete
                             </button>
                             </button>

+ 9 - 9
netbox/templates/dcim/inc/poweroutlet.html

@@ -1,4 +1,4 @@
-<tr class="poweroutlet{% if po.connected_port and not po.connected_port.connection_status %} info{% endif %}">
+<tr class="poweroutlet{% if po.connected_endpoint %} {% if po.connected_endpoint.connection_status %}success{% else %}info{% endif %}{% endif %}">
     {% if perms.dcim.change_poweroutlet or perms.dcim.delete_poweroutlet %}
     {% if perms.dcim.change_poweroutlet or perms.dcim.delete_poweroutlet %}
         <td class="pk">
         <td class="pk">
             <input name="pk" type="checkbox" value="{{ po.pk }}" />
             <input name="pk" type="checkbox" value="{{ po.pk }}" />
@@ -7,12 +7,12 @@
     <td>
     <td>
         <i class="fa fa-fw fa-bolt"></i> {{ po }}
         <i class="fa fa-fw fa-bolt"></i> {{ po }}
     </td>
     </td>
-    {% if po.connected_port %}
+    {% if po.connected_endpoint %}
         <td>
         <td>
-            <a href="{% url 'dcim:device' pk=po.connected_port.device.pk %}">{{ po.connected_port.device }}</a>
+            <a href="{% url 'dcim:device' pk=po.connected_endpoint.device.pk %}">{{ po.connected_endpoint.device }}</a>
         </td>
         </td>
         <td>
         <td>
-            {{ po.connected_port }}
+            {{ po.connected_endpoint }}
         </td>
         </td>
     {% else %}
     {% else %}
         <td colspan="2">
         <td colspan="2">
@@ -21,13 +21,13 @@
     {% endif %}
     {% endif %}
     <td class="text-right">
     <td class="text-right">
         {% if perms.dcim.change_poweroutlet %}
         {% if perms.dcim.change_poweroutlet %}
-            {% if po.connected_port %}
-                {% if po.connected_port.connection_status %}
-                    <a href="#" class="btn btn-warning btn-xs powerport-toggle connected" title="Mark planned" data="{{ po.connected_port.pk }}">
+            {% if po.connected_endpoint %}
+                {% if po.connected_endpoint.connection_status %}
+                    <a href="#" class="btn btn-warning btn-xs powerport-toggle connected" title="Mark planned" data="{{ po.connected_endpoint.pk }}">
                         <i class="glyphicon glyphicon-ban-circle" aria-hidden="true"></i>
                         <i class="glyphicon glyphicon-ban-circle" aria-hidden="true"></i>
                     </a>
                     </a>
                 {% else %}
                 {% else %}
-                    <a href="#" class="btn btn-success btn-xs powerport-toggle" title="Mark installed" data="{{ po.connected_port.pk }}">
+                    <a href="#" class="btn btn-success btn-xs powerport-toggle" title="Mark installed" data="{{ po.connected_endpoint.pk }}">
                         <i class="fa fa-plug" aria-hidden="true"></i>
                         <i class="fa fa-plug" aria-hidden="true"></i>
                     </a>
                     </a>
                 {% endif %}
                 {% endif %}
@@ -44,7 +44,7 @@
             </a>
             </a>
         {% endif %}
         {% endif %}
         {% if perms.dcim.delete_poweroutlet %}
         {% if perms.dcim.delete_poweroutlet %}
-            {% if po.connected_port %}
+            {% if po.connected_endpoint %}
                 <button class="btn btn-danger btn-xs" disabled="disabled">
                 <button class="btn btn-danger btn-xs" disabled="disabled">
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                 </button>
                 </button>

+ 6 - 6
netbox/templates/dcim/inc/powerport.html

@@ -1,13 +1,13 @@
-<tr class="powerport{% if pp.power_outlet and not pp.connection_status %} info{% endif %}">
+<tr class="powerport{% if pp.connected_endpoint %} {% if pp.connection_status %}success{% else %}info{% endif %}{% endif %}">
     <td>
     <td>
         <i class="fa fa-fw fa-bolt"></i> {{ pp }}
         <i class="fa fa-fw fa-bolt"></i> {{ pp }}
     </td>
     </td>
-    {% if pp.power_outlet %}
+    {% if pp.connected_endpoint %}
         <td>
         <td>
-            <a href="{% url 'dcim:device' pk=pp.power_outlet.device.pk %}">{{ pp.power_outlet.device }}</a>
+            <a href="{% url 'dcim:device' pk=pp.connected_endpoint.device.pk %}">{{ pp.connected_endpoint.device }}</a>
         </td>
         </td>
         <td>
         <td>
-            {{ pp.power_outlet }}
+            {{ pp.connected_endpoint }}
         </td>
         </td>
     {% else %}
     {% else %}
         <td colspan="2">
         <td colspan="2">
@@ -16,7 +16,7 @@
     {% endif %}
     {% endif %}
     <td class="text-right">
     <td class="text-right">
         {% if perms.dcim.change_powerport %}
         {% if perms.dcim.change_powerport %}
-            {% if pp.power_outlet %}
+            {% if pp.connected_endpoint %}
                 {% if pp.connection_status %}
                 {% if pp.connection_status %}
                     <a href="#" class="btn btn-warning btn-xs powerport-toggle connected" title="Mark planned" data="{{ pp.pk }}">
                     <a href="#" class="btn btn-warning btn-xs powerport-toggle connected" title="Mark planned" data="{{ pp.pk }}">
                         <i class="glyphicon glyphicon-ban-circle" aria-hidden="true"></i>
                         <i class="glyphicon glyphicon-ban-circle" aria-hidden="true"></i>
@@ -39,7 +39,7 @@
             </a>
             </a>
         {% endif %}
         {% endif %}
         {% if perms.dcim.delete_powerport %}
         {% if perms.dcim.delete_powerport %}
-            {% if pp.power_outlet %}
+            {% if pp.connected_endpoint %}
                 <button class="btn btn-danger btn-xs" disabled="disabled">
                 <button class="btn btn-danger btn-xs" disabled="disabled">
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                     <i class="glyphicon glyphicon-trash" aria-hidden="true"></i>
                 </button>
                 </button>

+ 1 - 1
netbox/templates/dcim/poweroutlet_disconnect.html

@@ -4,5 +4,5 @@
 {% block title %}Disconnect {{ poweroutlet.device }} {{ poweroutlet }}?{% endblock %}
 {% block title %}Disconnect {{ poweroutlet.device }} {{ poweroutlet }}?{% endblock %}
 
 
 {% block message %}
 {% block message %}
-    <p>Are you sure you want to disconnect {{ poweroutlet.connected_port.device }} {{ poweroutlet.connected_port }} from this port?</p>
+    <p>Are you sure you want to disconnect {{ poweroutlet.connected_endpoint.device }} {{ poweroutlet.connected_endpoint }} from this port?</p>
 {% endblock %}
 {% endblock %}

+ 1 - 1
netbox/templates/dcim/powerport_connect.html

@@ -35,7 +35,7 @@
                             {% render_field form.pdu %}
                             {% render_field form.pdu %}
                         </div>
                         </div>
                     </div>
                     </div>
-                    {% render_field form.power_outlet %}
+                    {% render_field form.connected_endpoint %}
                     {% render_field form.connection_status %}
                     {% render_field form.connection_status %}
                 </div>
                 </div>
             </div>
             </div>

+ 1 - 1
netbox/templates/dcim/powerport_disconnect.html

@@ -4,5 +4,5 @@
 {% block title %}Disconnect power port {{ powerport }}?{% endblock %}
 {% block title %}Disconnect power port {{ powerport }}?{% endblock %}
 
 
 {% block message %}
 {% block message %}
-    <p>Are you sure you want to disconnect this power port from {{ powerport.power_outlet.device }} {{ powerport.power_outlet }}?</p>
+    <p>Are you sure you want to disconnect this power port from {{ powerport.connected_endpoint.device }} {{ powerport.connected_endpoint }}?</p>
 {% endblock %}
 {% endblock %}