diff --git a/netbox/dcim/migrations/0182_zero_length_cable_fix.py b/netbox/dcim/migrations/0182_zero_length_cable_fix.py new file mode 100644 index 000000000..080e00717 --- /dev/null +++ b/netbox/dcim/migrations/0182_zero_length_cable_fix.py @@ -0,0 +1,22 @@ +from django.db import migrations + + +def update_cable_lengths(apps, schema_editor): + Cable = apps.get_model('dcim', 'Cable') + + # Set the absolute length for any zero-length Cables + Cable.objects.filter(length=0).update(_abs_length=0) + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0181_rename_device_role_device_role'), + ] + + operations = [ + migrations.RunPython( + code=update_cable_lengths, + reverse_code=migrations.RunPython.noop + ), + ] diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index f240659dd..86b4b9320 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -201,7 +201,7 @@ class Cable(PrimaryModel): _created = self.pk is None # Store the given length (if any) in meters for use in database ordering - if self.length and self.length_unit: + if self.length is not None and self.length_unit: self._abs_length = to_meters(self.length, self.length_unit) else: self._abs_length = None diff --git a/netbox/dcim/svg/cables.py b/netbox/dcim/svg/cables.py index acc4fcad9..85b60ead1 100644 --- a/netbox/dcim/svg/cables.py +++ b/netbox/dcim/svg/cables.py @@ -274,7 +274,7 @@ class CableTraceSVG: if cable.type: # Include the cable type in the tooltip description.append(cable.get_type_display()) - if cable.length and cable.length_unit: + if cable.length is not None and cable.length_unit: # Include the cable length in the tooltip description.append(f'{cable.length} {cable.get_length_unit_display()}') else: @@ -285,7 +285,7 @@ class CableTraceSVG: description = [] if cable.type: labels.append(cable.get_type_display()) - if cable.length and cable.length_unit: + if cable.length is not None and cable.length_unit: # Include the cable length in the tooltip labels.append(f'{cable.length} {cable.get_length_unit_display()}') diff --git a/netbox/templates/dcim/cable.html b/netbox/templates/dcim/cable.html index 535b96977..caa1a9fe0 100644 --- a/netbox/templates/dcim/cable.html +++ b/netbox/templates/dcim/cable.html @@ -50,7 +50,7 @@ <tr> <th scope="row">{% trans "Length" %}</th> <td> - {% if object.length %} + {% if object.length is not None %} {{ object.length|floatformat }} {{ object.get_length_unit_display }} {% else %} {{ ''|placeholder }}