1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Fixes #4166: Fix schema migrations to enforce maximum character length for naturalized fields

This commit is contained in:
Jeremy Stretch
2020-02-13 21:41:00 -05:00
parent 4d50cad6ed
commit 909323663e
8 changed files with 25 additions and 11 deletions

View File

@@ -10,7 +10,7 @@ INTERFACE_NAME_REGEX = r'(^(?P<type>[^\d\.:]+)?)' \
r'(.(?P<vc>\d+)$)?'
def naturalize(value, max_length=None, integer_places=8):
def naturalize(value, max_length, integer_places=8):
"""
Take an alphanumeric string and prepend all integers to `integer_places` places to ensure the strings
are ordered naturally. For example:
@@ -39,10 +39,10 @@ def naturalize(value, max_length=None, integer_places=8):
output.append(segment)
ret = ''.join(output)
return ret[:max_length] if max_length else ret
return ret[:max_length]
def naturalize_interface(value, max_length=None):
def naturalize_interface(value, max_length):
"""
Similar in nature to naturalize(), but takes into account a particular naming format adapted from the old
InterfaceManager.
@@ -77,4 +77,4 @@ def naturalize_interface(value, max_length=None):
output.append('000000')
ret = ''.join(output)
return ret[:max_length] if max_length else ret
return ret[:max_length]

View File

@@ -21,7 +21,10 @@ class NaturalizationTestCase(TestCase):
)
for origin, naturalized in data:
self.assertEqual(naturalize(origin), naturalized)
self.assertEqual(naturalize(origin, max_length=50), naturalized)
def test_naturalize_max_length(self):
self.assertEqual(naturalize('abc123def456', max_length=10), 'abc0000012')
def test_naturalize_interface(self):
@@ -40,4 +43,7 @@ class NaturalizationTestCase(TestCase):
)
for origin, naturalized in data:
self.assertEqual(naturalize_interface(origin), naturalized)
self.assertEqual(naturalize_interface(origin, max_length=50), naturalized)
def test_naturalize_interface_max_length(self):
self.assertEqual(naturalize_interface('Gi1/2/3', max_length=20), '0001000299999999Gi00')