0001-manager-show-missing-role-recap-in-csv-import-50166.patch
src/authentic2/csv_import.py | ||
---|---|---|
373 | 373 |
updated = 0 |
374 | 374 |
created = 0 |
375 | 375 |
rows_with_errors = 0 |
376 |
missing_roles = None |
|
376 | 377 | |
377 | 378 |
def add_error(self, line_error): |
378 | 379 |
if not hasattr(line_error, 'line'): |
... | ... | |
382 | 383 |
def run(self, fd_or_str, encoding, ou=None, simulate=False): |
383 | 384 |
self.ou = ou or get_default_ou() |
384 | 385 |
self.errors = [] |
386 |
self.missing_roles = set() |
|
385 | 387 |
self.csv_importer = CsvImporter() |
386 | 388 |
self.max_user_id = User.objects.aggregate(max=models.Max('id'))['max'] or -1 |
387 | 389 | |
... | ... | |
757 | 759 |
elif cell.header.name == ROLE_SLUG: |
758 | 760 |
role = Role.objects.get(slug=cell.value, ou=self.ou) |
759 | 761 |
except Role.DoesNotExist: |
762 |
self.missing_roles.add(cell.value) |
|
760 | 763 |
cell.errors.append( |
761 | 764 |
Error('role-not-found', |
762 | 765 |
_('Role "%s" does not exist') % cell.value)) |
src/authentic2/manager/templates/authentic2/manager/user_import_report.html | ||
---|---|---|
90 | 90 |
<li>{% blocktrans count created=importer.created %}{{ created }} user created{% plural %}{{ created }} users created{% endblocktrans %}</li> |
91 | 91 |
<li>{% blocktrans count updated=importer.updated %}{{ updated }} user updated{% plural %}{{ updated }} users updated{% endblocktrans %}</li> |
92 | 92 |
<li>{% blocktrans count error_rows=importer.rows_with_errors %}{{ error_rows }} row has error{% plural %}{{ error_rows }} rows have errors{% endblocktrans %}</li> |
93 |
{% if importer.missing_roles %} |
|
94 |
<li>{% trans "The following roles were missing:" %} {{ importer.missing_roles|join:", " }}</li> |
|
95 |
{% endif %} |
|
93 | 96 |
<li>{% blocktrans with duration=report.duration %}import took {{ duration }}{% endblocktrans %}</li> |
94 | 97 |
</ul> |
95 | 98 |
<h3>{% trans "Details" %}</h3> |
tests/test_user_manager.py | ||
---|---|---|
681 | 681 |
assert 'matches too many user' in response.pyquery('tr.row-errors').text() |
682 | 682 | |
683 | 683 | |
684 |
def test_user_import_missing_roles_recap(transactional_db, app, admin): |
|
685 |
content = '''first_name key,last_name,_role_name |
|
686 |
Elliott,Doe,test1 |
|
687 |
Jane,Doe,test1 |
|
688 |
John,Doe,test2''' |
|
689 |
login(app, admin, '/manage/users/') |
|
690 |
response = import_csv(content, app) |
|
691 | ||
692 |
assert 'The following roles were missing: test1, test2' in response.text |
|
693 | ||
694 | ||
684 | 695 |
def test_manager_create_user_next(superuser_or_admin, app, ou1): |
685 | 696 |
login(app, superuser_or_admin, '/manage/') |
686 | 697 | |
687 |
- |