diff --git a/netbox/utilities/forms.py b/netbox/utilities/forms.py index 1a285707e..417e164fb 100644 --- a/netbox/utilities/forms.py +++ b/netbox/utilities/forms.py @@ -88,17 +88,18 @@ def parse_alphanumeric_range(string): for dash_range in string.split(','): try: begin, end = dash_range.split('-') - # Skip if incompatible types or mixed case, just like any other bad pattern vals = begin + end - if not (vals.isdigit() or vals.isalpha()): - continue - if vals.isalpha() and not (vals.isupper() or vals.islower()): - continue + # Break out of loop if there's an invalid pattern to return an error + if (not (vals.isdigit() or vals.isalpha())) or (vals.isalpha() and not (vals.isupper() or vals.islower())): + return [] except ValueError: begin, end = dash_range, dash_range - nums = list(range(ord(begin), ord(end) + 1)) - for n in nums: - values.append(chr(n)) + if begin.isdigit() and end.isdigit(): + for n in list(range(int(begin), int(end) + 1)): + values.append(n) + else: + for n in list(range(ord(begin), ord(end) + 1)): + values.append(chr(n)) return values