瀏覽代碼

fix(utilities): Enhance ranges_to_string for improved clarity (#20479)

Martin Hauser 4 月之前
父節點
當前提交
51528ae429
共有 1 個文件被更改,包括 12 次插入3 次删除
  1. 12 3
      netbox/utilities/data.py

+ 12 - 3
netbox/utilities/data.py

@@ -137,8 +137,17 @@ def check_ranges_overlap(ranges):
 
 def ranges_to_string(ranges):
     """
-    Generate a human-friendly string from a set of ranges. Intended for use with ArrayField. For example:
-        [[1, 100)], [200, 300)] => "1-99,200-299"
+    Converts a list of ranges into a string representation.
+
+    This function takes a list of range objects and produces a string
+    representation of those ranges. Each range is represented as a
+    hyphen-separated pair of lower and upper bounds, with inclusive or
+    exclusive bounds adjusted accordingly. If the lower and upper bounds
+    of a range are the same, only the single value is added to the string.
+    Intended for use with ArrayField.
+
+    Example:
+        [NumericRange(1, 5), NumericRange(8, 9), NumericRange(10, 12)] => "1-5,8,10-12"
     """
     if not ranges:
         return ''
@@ -146,7 +155,7 @@ def ranges_to_string(ranges):
     for r in ranges:
         lower = r.lower if r.lower_inc else r.lower + 1
         upper = r.upper if r.upper_inc else r.upper - 1
-        output.append(f'{lower}-{upper}')
+        output.append(f"{lower}-{upper}" if lower != upper else str(lower))
     return ','.join(output)