mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-11 02:49:35 -06:00
fix(utilities): Enhance ranges_to_string for improved clarity (#20479)
This commit is contained in:
parent
d5e8480367
commit
51528ae429
@ -137,8 +137,17 @@ def check_ranges_overlap(ranges):
|
|||||||
|
|
||||||
def ranges_to_string(ranges):
|
def ranges_to_string(ranges):
|
||||||
"""
|
"""
|
||||||
Generate a human-friendly string from a set of ranges. Intended for use with ArrayField. For example:
|
Converts a list of ranges into a string representation.
|
||||||
[[1, 100)], [200, 300)] => "1-99,200-299"
|
|
||||||
|
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:
|
if not ranges:
|
||||||
return ''
|
return ''
|
||||||
@ -146,7 +155,7 @@ def ranges_to_string(ranges):
|
|||||||
for r in ranges:
|
for r in ranges:
|
||||||
lower = r.lower if r.lower_inc else r.lower + 1
|
lower = r.lower if r.lower_inc else r.lower + 1
|
||||||
upper = r.upper if r.upper_inc else r.upper - 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)
|
return ','.join(output)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user