Parcourir la source

For #18352, adds choices, model field, migration

Adds:
- dcim.choices.PowerOutletStatusChoices
- dcim.models.device_components.PowerOutlet.status field with `choices`
  set to PowerOutletStatusChoices
- adds migration for PowerOutlet.status field
- updates breaking view tests
Jason Novinger il y a 11 mois
Parent
commit
dbac09349b

+ 17 - 0
netbox/dcim/choices.py

@@ -1627,6 +1627,23 @@ class PowerFeedPhaseChoices(ChoiceSet):
     )
 
 
+#
+# PowerOutlets
+#
+class PowerOutletStatusChoices(ChoiceSet):
+    key = 'PowerOutlet.status'
+
+    STATUS_ENABLED = 'enabled'
+    STATUS_DISABLED = 'disabled'
+    STATUS_FAULTY = 'faulty'
+
+    CHOICES = [
+        (STATUS_ENABLED, _('Enabled'), 'green'),
+        (STATUS_DISABLED, _('Disabled'), 'red'),
+        (STATUS_FAULTY, _('Faulty'), 'gray'),
+    ]
+
+
 #
 # VDC
 #

+ 16 - 0
netbox/dcim/migrations/0201_add_power_outlet_status.py

@@ -0,0 +1,16 @@
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('dcim', '0200_populate_mac_addresses'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='poweroutlet',
+            name='status',
+            field=models.CharField(default='enabled', max_length=50),
+        ),
+    ]

+ 6 - 0
netbox/dcim/models/device_components.py

@@ -449,6 +449,12 @@ class PowerOutlet(ModularComponentModel, CabledObjectModel, PathEndpoint, Tracki
     """
     A physical power outlet (output) within a Device which provides power to a PowerPort.
     """
+    status = models.CharField(
+        verbose_name=_('status'),
+        max_length=50,
+        choices=PowerOutletStatusChoices,
+        default=PowerOutletStatusChoices.STATUS_ENABLED
+    )
     type = models.CharField(
         verbose_name=_('type'),
         max_length=50,

+ 3 - 0
netbox/dcim/tests/test_views.py

@@ -2513,6 +2513,7 @@ class PowerOutletTestCase(ViewTestCases.DeviceComponentViewTestCase):
             'device': device.pk,
             'name': 'Power Outlet X',
             'type': PowerOutletTypeChoices.TYPE_IEC_C13,
+            'status': PowerOutletStatusChoices.STATUS_ENABLED,
             'power_port': powerports[1].pk,
             'feed_leg': PowerOutletFeedLegChoices.FEED_LEG_B,
             'description': 'A power outlet',
@@ -2523,6 +2524,7 @@ class PowerOutletTestCase(ViewTestCases.DeviceComponentViewTestCase):
             'device': device.pk,
             'name': 'Power Outlet [4-6]',
             'type': PowerOutletTypeChoices.TYPE_IEC_C13,
+            'status': PowerOutletStatusChoices.STATUS_ENABLED,
             'power_port': powerports[1].pk,
             'feed_leg': PowerOutletFeedLegChoices.FEED_LEG_B,
             'description': 'A power outlet',
@@ -2531,6 +2533,7 @@ class PowerOutletTestCase(ViewTestCases.DeviceComponentViewTestCase):
 
         cls.bulk_edit_data = {
             'type': PowerOutletTypeChoices.TYPE_IEC_C15,
+            'status': PowerOutletStatusChoices.STATUS_ENABLED,
             'power_port': powerports[1].pk,
             'feed_leg': PowerOutletFeedLegChoices.FEED_LEG_B,
             'description': 'New description',