diff --git a/modoboa/admin/api.py b/modoboa/admin/api.py index 451422482..9e493ae43 100644 --- a/modoboa/admin/api.py +++ b/modoboa/admin/api.py @@ -6,7 +6,7 @@ from django import http from django.contrib.contenttypes.models import ContentType -from rest_framework import status, viewsets +from rest_framework import filters, status, viewsets from rest_framework.decorators import detail_route, list_route from rest_framework.exceptions import ParseError from rest_framework.permissions import IsAuthenticated, DjangoModelPermissions @@ -62,8 +62,10 @@ class DomainAliasViewSet(viewsets.ModelViewSet): class AccountViewSet(viewsets.ModelViewSet): """ViewSet for User/Mailbox.""" - permission_classes = [IsAuthenticated, DjangoModelPermissions, ] + filter_backends = [filters.SearchFilter] http_method_names = ["get", "post", "put", "delete"] + permission_classes = [IsAuthenticated, DjangoModelPermissions, ] + search_fields = ("^first_name", "^last_name", "^email") def get_serializer_class(self): """Return a serializer.""" diff --git a/modoboa/admin/tests/test_api.py b/modoboa/admin/tests/test_api.py index 2260d4ab9..f1a7c5088 100644 --- a/modoboa/admin/tests/test_api.py +++ b/modoboa/admin/tests/test_api.py @@ -231,6 +231,11 @@ class AccountAPITestCase(ModoAPITestCase): response = response.json() self.assertEqual(len(response), 0) + response = self.client.get("{}?search=user@test.com".format(url)) + self.assertEqual(response.status_code, 200) + response = response.json() + self.assertEqual(len(response), 1) + def test_create_account(self): """Try to create a new account.""" url = reverse("api:account-list")