csv_import: add auto key column detection (#50157)
This commit is contained in:
parent
229582db81
commit
e895bb0142
|
@ -426,7 +426,12 @@ class UserCsvImporter(object):
|
|||
key_counts = sum(1 for header in self.headers if header.key)
|
||||
|
||||
if not key_counts:
|
||||
self.add_error(Error('missing-key-column', _('Missing key column')))
|
||||
if self.email_is_unique and 'email' in self.headers_by_name:
|
||||
self.headers_by_name['email'].key = True
|
||||
elif self.username_is_unique and 'username' in self.headers_by_name:
|
||||
self.headers_by_name['username'].key = True
|
||||
else:
|
||||
self.add_error(Error('missing-key-column', _('Missing key column')))
|
||||
if key_counts > 1:
|
||||
self.add_error(Error('too-many-key-columns', _('Too many key columns')))
|
||||
|
||||
|
|
|
@ -121,8 +121,35 @@ def test_unknown_flag_error(profile, user_csv_importer_factory):
|
|||
assert importer.errors == [LineError('unknown-flag', line=1, column=2)]
|
||||
|
||||
|
||||
def test_missing_key_column_error(profile, user_csv_importer_factory):
|
||||
importer = user_csv_importer_factory('email,first_name\n1,2')
|
||||
def test_missing_key_column_error(profile, user_csv_importer_factory, settings):
|
||||
content = 'email,first_name\ntnoel@entrouvert.com,Thomas'
|
||||
importer = user_csv_importer_factory(content)
|
||||
assert not importer.run()
|
||||
assert importer.has_errors
|
||||
assert importer.errors == [Error('missing-key-column')]
|
||||
|
||||
ou = get_default_ou()
|
||||
ou.email_is_unique = True
|
||||
ou.save()
|
||||
|
||||
importer = user_csv_importer_factory(content)
|
||||
assert importer.run()
|
||||
assert not importer.has_errors
|
||||
|
||||
content = 'username,first_name\ntnoel,Thomas'
|
||||
|
||||
importer = user_csv_importer_factory(content)
|
||||
assert importer.run()
|
||||
assert not importer.has_errors
|
||||
|
||||
settings.A2_USERNAME_IS_UNIQUE = False
|
||||
importer = user_csv_importer_factory(content)
|
||||
assert not importer.run()
|
||||
assert importer.has_errors
|
||||
assert importer.errors == [Error('missing-key-column')]
|
||||
|
||||
content = 'last_name,first_name\nNoel,Thomas'
|
||||
importer = user_csv_importer_factory(content)
|
||||
assert not importer.run()
|
||||
assert importer.has_errors
|
||||
assert importer.errors == [Error('missing-key-column')]
|
||||
|
|
Loading…
Reference in New Issue