Projet

Général

Profil

0001-manager-provide-a-simpler-ou-creation-form-66795.patch

Paul Marillonnet, 20 juillet 2022 15:19

Télécharger (3,83 ko)

Voir les différences:

Subject: [PATCH] manager: provide a simpler ou creation form (#66795)

 src/authentic2/manager/forms.py    |  3 ++-
 src/authentic2/manager/ou_views.py |  5 +----
 tests/test_manager.py              | 29 +++++++++++++++++++++++++++--
 3 files changed, 30 insertions(+), 7 deletions(-)
src/authentic2/manager/forms.py
613 613
    def __init__(self, *args, **kwargs):
614 614
        super().__init__(*args, **kwargs)
615 615
        self.fields['name'].label = _('label').title()
616
        self.fields['colour'].widget = forms.TextInput(attrs={'type': 'color'})
616
        if 'colour' in self.fields:
617
            self.fields['colour'].widget = forms.TextInput(attrs={'type': 'color'})
617 618

  
618 619
    class Meta:
619 620
        model = OrganizationalUnit
src/authentic2/manager/ou_views.py
47 47
    permissions = ['a2_rbac.add_organizationalunit']
48 48
    form_class = forms.OUEditForm
49 49
    title = _('Add organizational unit')
50
    exclude_fields = ('slug',)
51

  
52
    def get_fields(self):
53
        return [x for x in self.form_class.base_fields.keys() if x not in self.exclude_fields]
50
    fields = ('name',)
54 51

  
55 52
    def get_success_url(self):
56 53
        return '..'
tests/test_manager.py
65 65
    ou_add = login(app, superuser_or_admin, path=reverse('a2-manager-ou-add'))
66 66
    form = ou_add.form
67 67
    assert 'name' in form.fields
68
    assert 'slug' not in form.fields
68
    excluded_fields = (
69
        'slug',
70
        'default',
71
        'username_is_unique',
72
        'email_is_unique',
73
        'validate_emails',
74
        'show_username',
75
        'check_required_on_login_attributes',
76
        'user_can_reset_password',
77
        'user_add_password_policy',
78
        'clean_unused_accounts_alert',
79
        'clean_unused_accounts_deletion',
80
        'home_url',
81
        'logo',
82
        'colour',
83
    )
84
    for field in excluded_fields:
85
        assert field not in form.fields
86

  
69 87
    form.set('name', 'New OU')
70 88
    response = form.submit().follow()
71 89
    assert 'New OU' in response
......
807 825
    # add a new ou
808 826
    add_ou_page = ou_homepage.click('Add')
809 827
    add_ou_page.form.set('name', 'ou2')
810
    add_ou_page.form.set('default', True)
811 828
    ou_homepage = add_ou_page.form.submit().follow()
812 829
    ou2 = OU.objects.get(name='ou2')
813 830
    assert {text_content(e) for e in ou_homepage.pyquery('td.name')} == {
......
815 832
        'Default organizational unit',
816 833
        'ou2',
817 834
    }
835
    assert len(ou_homepage.pyquery('tr[data-pk="%s"] td.default span.true' % ou2.pk)) == 0
836
    assert len(ou_homepage.pyquery('tr td a[href="%s"]' % ou2.get_absolute_url())) == 1
837

  
838
    ou2_edit_page = app.get(reverse('a2-manager-ou-edit', kwargs={'pk': ou2.pk}))
839
    ou2_edit_page.form.set('default', True)
840

  
841
    ou2_edit_page.form.submit().follow()
842
    ou_homepage = manager_home_page.click(href='organizational-units')
818 843
    assert len(ou_homepage.pyquery('tr[data-pk="%s"] td.default span.true' % ou2.pk)) == 1
819 844
    assert len(ou_homepage.pyquery('tr td a[href="%s"]' % ou2.get_absolute_url())) == 1
820 845

  
821
-