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

Improve error reporting for duplicate CSV column headings

Fixes #11990
This commit is contained in:
Brian Candler
2023-03-16 12:22:24 +00:00
committed by Jeremy Stretch
parent fc482ed096
commit a864e8127b
2 changed files with 20 additions and 0 deletions

View File

@ -198,8 +198,12 @@ def parse_csv(reader):
header = header.strip()
if '.' in header:
field, to_field = header.split('.', 1)
if field in headers:
raise forms.ValidationError(f'Duplicate or conflicting column header for "{field}"')
headers[field] = to_field
else:
if header in headers:
raise forms.ValidationError(f'Duplicate or conflicting column header for "{header}"')
headers[header] = None
# Parse CSV rows into a list of dictionaries mapped from the column headers.

View File

@ -319,6 +319,22 @@ class CSVDataFieldTest(TestCase):
with self.assertRaises(forms.ValidationError):
self.field.clean(input)
def test_duplicate_header(self):
input = """
status,status
Active,Active
"""
with self.assertRaisesRegex(forms.ValidationError, 'Duplicate'):
self.field.clean(input)
def test_duplicate_header_key(self):
input = """
vrf.name,vrf.rd
Test VRF,123:456
"""
with self.assertRaisesRegex(forms.ValidationError, 'Duplicate'):
self.field.clean(input)
def test_clean_default_to_field(self):
input = """
address,status,vrf.name