Projet

Général

Profil

0001-manager-fix-import-roles-crash-when-single-ou-46448.patch

Valentin Deniaud, 08 septembre 2020 14:13

Télécharger (2,3 ko)

Voir les différences:

Subject: [PATCH] manager: fix import roles crash when single ou (#46448)

 src/authentic2/manager/forms.py |  7 ++++++-
 tests/test_role_manager.py      | 22 ++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)
src/authentic2/manager/forms.py
675 675
    file_field_label = _('Organizational Units Export File')
676 676

  
677 677

  
678
class RolesImportForm(HideOUFieldMixin, LimitQuerysetFormMixin, SiteImportForm):
678
class RolesImportForm(LimitQuerysetFormMixin, SiteImportForm):
679 679
    file_field_label = _('Roles Export File')
680 680

  
681
    def __init__(self, *args, **kwargs):
682
        super().__init__(*args, **kwargs)
683
        if utils.get_ou_count() < 2:
684
            self.fields['ou'].widget = forms.HiddenInput()
685

  
681 686
    ou = forms.ModelChoiceField(
682 687
        label=_('Organizational unit'),
683 688
        queryset=get_ou_model().objects,
tests/test_role_manager.py
166 166
    resp = resp.form.submit().follow()
167 167

  
168 168
    assert not OrganizationalUnit.objects.filter(slug="should_not_exist").exists()
169

  
170

  
171
def test_manager_role_import_single_ou(app, admin, simple_role):
172
    assert OrganizationalUnit.objects.count() == 1
173
    response = login(app, admin, 'a2-manager-roles')
174

  
175
    export_response = response.click('Export')
176
    export = export_response.json
177

  
178
    assert len(export['roles']) == 1
179
    simple_role.delete()
180

  
181
    resp = app.get('/manage/roles/')
182
    resp = resp.click('Import')
183
    assert not 'Organizational unit' in resp.text
184
    assert resp.form['ou'].attrs['type'] == 'hidden'
185

  
186
    resp.form['site_json'] = Upload('export.json', json.dumps(export).encode(), 'application/json')
187
    resp = resp.form.submit().follow()
188

  
189
    imported_role = Role.objects.get(slug=simple_role.slug)
190
    assert imported_role.ou == simple_role.ou
169
-