Projet

Général

Profil

0001-manager-allow-filtering-services-by-OU-54190.patch

Valentin Deniaud, 25 mai 2021 17:55

Télécharger (3,22 ko)

Voir les différences:

Subject: [PATCH] manager: allow filtering services by OU (#54190)

 src/authentic2/manager/forms.py         |  4 ++++
 src/authentic2/manager/service_views.py |  7 ++++++-
 tests/test_manager.py                   | 21 +++++++++++++++++++++
 3 files changed, 31 insertions(+), 1 deletion(-)
src/authentic2/manager/forms.py
594 594
        return qs
595 595

  
596 596

  
597
class ServiceSearchForm(OUSearchForm, NameSearchForm):
598
    pass
599

  
600

  
597 601
class RoleEditForm(SlugMixin, HideOUFieldMixin, LimitQuerysetFormMixin, CssClass, forms.ModelForm):
598 602
    ou = forms.ModelChoiceField(
599 603
        queryset=get_ou_model().objects, required=True, label=_('Organizational unit')
src/authentic2/manager/service_views.py
26 26
    model = Service
27 27
    template_name = 'authentic2/manager/services.html'
28 28
    table_class = tables.ServiceTable
29
    search_form_class = forms.NameSearchForm
29
    search_form_class = forms.ServiceSearchForm
30 30
    permissions = ['authentic2.search_service']
31 31
    title = _('Services')
32 32

  
33
    def get_search_form_kwargs(self):
34
        kwargs = super().get_search_form_kwargs()
35
        kwargs['queryset'] = self.get_queryset()
36
        return kwargs
37

  
33 38

  
34 39
listing = ServicesView.as_view()
35 40

  
tests/test_manager.py
31 31
from authentic2.a2_rbac.models import MANAGE_MEMBERS_OP
32 32
from authentic2.a2_rbac.utils import get_default_ou
33 33
from authentic2.apps.journal.models import Event
34
from authentic2.models import Service
34 35
from authentic2.validators import EmailValidator
35 36
from django_rbac.models import VIEW_OP
36 37
from django_rbac.utils import get_operation, get_ou_model, get_permission_model, get_role_model
......
1184 1185
        'ou1 - parent4',
1185 1186
        'ou2 - parent3',
1186 1187
    ]
1188

  
1189

  
1190
def test_manager_service_search(app, admin, ou1):
1191
    Service.objects.create(ou=ou1, slug='test', name='Test Service')
1192
    Service.objects.create(ou=get_default_ou(), slug='example', name='Example Service')
1193

  
1194
    resp = login(app, admin, 'a2-manager-services')
1195
    assert 'Test Service' in resp.text
1196
    assert 'Example Service' in resp.text
1197

  
1198
    resp.form.set('search-text', 'example')
1199
    resp = resp.form.submit()
1200
    assert 'Test Service' not in resp.text
1201
    assert 'Example Service' in resp.text
1202

  
1203
    resp.form.set('search-text', '')
1204
    resp.form.set('search-ou', ou1.pk)
1205
    resp = resp.form.submit()
1206
    assert 'Test Service' in resp.text
1207
    assert 'Example Service' not in resp.text
1187
-