mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Merge letters and numbers into one function
This commit is contained in:
parent
3d91153275
commit
c107f35118
@ -39,7 +39,7 @@ COLOR_CHOICES = (
|
|||||||
('111111', 'Black'),
|
('111111', 'Black'),
|
||||||
)
|
)
|
||||||
NUMERIC_EXPANSION_PATTERN = '\[((?:\d+[?:,-])+\d+)\]'
|
NUMERIC_EXPANSION_PATTERN = '\[((?:\d+[?:,-])+\d+)\]'
|
||||||
ALPHABETIC_EXPANSION_PATTERN = '\[((?:[a-z]+[?:,-])+[a-z]+)\]'
|
ALPHANUMERIC_EXPANSION_PATTERN = '\[((?:\w+[?:,-])+\w+)\]'
|
||||||
IP4_EXPANSION_PATTERN = '\[((?:[0-9]{1,3}[?:,-])+[0-9]{1,3})\]'
|
IP4_EXPANSION_PATTERN = '\[((?:[0-9]{1,3}[?:,-])+[0-9]{1,3})\]'
|
||||||
IP6_EXPANSION_PATTERN = '\[((?:[0-9a-f]{1,4}[?:,-])+[0-9a-f]{1,4})\]'
|
IP6_EXPANSION_PATTERN = '\[((?:[0-9a-f]{1,4}[?:,-])+[0-9a-f]{1,4})\]'
|
||||||
|
|
||||||
@ -78,9 +78,9 @@ def expand_numeric_pattern(string):
|
|||||||
yield "{}{}{}".format(lead, i, remnant)
|
yield "{}{}{}".format(lead, i, remnant)
|
||||||
|
|
||||||
|
|
||||||
def parse_alphabetic_range(string):
|
def parse_alphanumeric_range(string):
|
||||||
"""
|
"""
|
||||||
Expand an alphabetic range (continuous or not) into a list.
|
Expand an alphanumeric range (continuous or not) into a list.
|
||||||
'a-d,f' => ['a', 'b', 'c', 'd', 'f']
|
'a-d,f' => ['a', 'b', 'c', 'd', 'f']
|
||||||
"""
|
"""
|
||||||
values = []
|
values = []
|
||||||
@ -95,15 +95,15 @@ def parse_alphabetic_range(string):
|
|||||||
return values
|
return values
|
||||||
|
|
||||||
|
|
||||||
def expand_alphabetic_pattern(string):
|
def expand_alphanumeric_pattern(string):
|
||||||
"""
|
"""
|
||||||
Expand an alphabetic pattern into a list of strings.
|
Expand an alphabetic pattern into a list of strings.
|
||||||
"""
|
"""
|
||||||
lead, pattern, remnant = re.split(ALPHABETIC_EXPANSION_PATTERN, string, maxsplit=1)
|
lead, pattern, remnant = re.split(ALPHANUMERIC_EXPANSION_PATTERN, string, maxsplit=1)
|
||||||
parsed_range = parse_alphabetic_range(pattern)
|
parsed_range = parse_alphanumeric_range(pattern)
|
||||||
for i in parsed_range:
|
for i in parsed_range:
|
||||||
if re.search(ALPHABETIC_EXPANSION_PATTERN, remnant):
|
if re.search(ALPHANUMERIC_EXPANSION_PATTERN, remnant):
|
||||||
for string in expand_alphabetic_pattern(remnant):
|
for string in expand_alphanumeric_pattern(remnant):
|
||||||
yield "{}{}{}".format(lead, i, string)
|
yield "{}{}{}".format(lead, i, string)
|
||||||
else:
|
else:
|
||||||
yield "{}{}{}".format(lead, i, remnant)
|
yield "{}{}{}".format(lead, i, remnant)
|
||||||
@ -339,12 +339,9 @@ class ExpandableNameField(forms.CharField):
|
|||||||
'Example: <code>ge-0/0/[0-23,25,30]</code>'
|
'Example: <code>ge-0/0/[0-23,25,30]</code>'
|
||||||
|
|
||||||
def to_python(self, value):
|
def to_python(self, value):
|
||||||
values = []
|
if re.search(ALPHANUMERIC_EXPANSION_PATTERN, value):
|
||||||
if re.search(NUMERIC_EXPANSION_PATTERN, value):
|
return list(expand_alphanumeric_pattern(value))
|
||||||
values += expand_numeric_pattern(value)
|
return [value]
|
||||||
if re.search(ALPHABETIC_EXPANSION_PATTERN, value):
|
|
||||||
values += expand_alphabetic_pattern(value)
|
|
||||||
return values
|
|
||||||
|
|
||||||
|
|
||||||
class ExpandableIPAddressField(forms.CharField):
|
class ExpandableIPAddressField(forms.CharField):
|
||||||
|
Loading…
Reference in New Issue
Block a user