Projet

Général

Profil

0001-csv_import-add-auto-key-column-detection-50157.patch

Valentin Deniaud, 23 février 2021 16:25

Télécharger (2,84 ko)

Voir les différences:

Subject: [PATCH] csv_import: add auto key column detection (#50157)

 src/authentic2/csv_import.py |  7 ++++++-
 tests/test_csv_import.py     | 31 +++++++++++++++++++++++++++++--
 2 files changed, 35 insertions(+), 3 deletions(-)
src/authentic2/csv_import.py
440 440
        key_counts = sum(1 for header in self.headers if header.key)
441 441

  
442 442
        if not key_counts:
443
            self.add_error(Error('missing-key-column', _('Missing key column')))
443
            if self.email_is_unique and 'email' in self.headers_by_name:
444
                self.headers_by_name['email'].key = True
445
            elif self.username_is_unique and 'username' in self.headers_by_name:
446
                self.headers_by_name['username'].key = True
447
            else:
448
                self.add_error(Error('missing-key-column', _('Missing key column')))
444 449
        if key_counts > 1:
445 450
            self.add_error(Error('too-many-key-columns', _('Too many key columns')))
446 451

  
tests/test_csv_import.py
122 122
    assert importer.errors == [LineError('unknown-flag', line=1, column=2)]
123 123

  
124 124

  
125
def test_missing_key_column_error(profile, user_csv_importer_factory):
126
    importer = user_csv_importer_factory('email,first_name\n1,2')
125
def test_missing_key_column_error(profile, user_csv_importer_factory, settings):
126
    content = 'email,first_name\ntnoel@entrouvert.com,Thomas'
127
    importer = user_csv_importer_factory(content)
128
    assert not importer.run()
129
    assert importer.has_errors
130
    assert importer.errors == [Error('missing-key-column')]
131

  
132
    ou = get_default_ou()
133
    ou.email_is_unique = True
134
    ou.save()
135

  
136
    importer = user_csv_importer_factory(content)
137
    assert importer.run()
138
    assert not importer.has_errors
139

  
140
    content = 'username,first_name\ntnoel,Thomas'
141

  
142
    importer = user_csv_importer_factory(content)
143
    assert importer.run()
144
    assert not importer.has_errors
145

  
146
    settings.A2_USERNAME_IS_UNIQUE = False
147
    importer = user_csv_importer_factory(content)
148
    assert not importer.run()
149
    assert importer.has_errors
150
    assert importer.errors == [Error('missing-key-column')]
151

  
152
    content = 'last_name,first_name\nNoel,Thomas'
153
    importer = user_csv_importer_factory(content)
127 154
    assert not importer.run()
128 155
    assert importer.has_errors
129 156
    assert importer.errors == [Error('missing-key-column')]
130
-