Projet

Général

Profil

0001-manager-show-missing-role-recap-in-csv-import-50166.patch

Valentin Deniaud, 23 février 2021 17:29

Télécharger (3,47 ko)

Voir les différences:

Subject: [PATCH] manager: show missing role recap in csv import (#50166)

 src/authentic2/csv_import.py                          |  3 +++
 .../authentic2/manager/user_import_report.html        |  3 +++
 tests/test_user_manager.py                            | 11 +++++++++++
 3 files changed, 17 insertions(+)
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
-