From fef942b62f1578315c2a3abe36bcbd8c125107c1 Mon Sep 17 00:00:00 2001 From: Guillaume Vincent Date: Tue, 16 Oct 2018 12:30:50 +0200 Subject: [PATCH] Add search by name on playbook endpoint Change-Id: I1ffb958aff4aa466cb15e3e2c2e9f0bb28207224 --- ara/api/tests/tests_playbook.py | 7 +++++++ ara/api/views.py | 3 +++ ara/server/settings.py | 1 + requirements.txt | 1 + 4 files changed, 12 insertions(+) diff --git a/ara/api/tests/tests_playbook.py b/ara/api/tests/tests_playbook.py index 7bc845ca..b3bf9cb3 100644 --- a/ara/api/tests/tests_playbook.py +++ b/ara/api/tests/tests_playbook.py @@ -100,6 +100,13 @@ class PlaybookTestCase(APITestCase): request = self.client.get("/api/v1/playbooks/%s" % playbook.id) self.assertEqual(playbook.ansible_version, request.data["ansible_version"]) + def test_get_playbook_by_name(self): + playbook = factories.PlaybookFactory(name="playbook1") + factories.PlaybookFactory(name="playbook2") + request = self.client.get("/api/v1/playbooks?name=playbook1") + self.assertEqual(1, len(request.data["results"])) + self.assertEqual(playbook.name, request.data["results"][0]["name"]) + def test_get_playbook_duration(self): started = timezone.now() ended = started + datetime.timedelta(hours=1) diff --git a/ara/api/views.py b/ara/api/views.py index 964e5ccd..e6c4fef3 100644 --- a/ara/api/views.py +++ b/ara/api/views.py @@ -15,6 +15,7 @@ # You should have received a copy of the GNU General Public License # along with ARA. If not, see . from django.db import transaction +from django_filters.rest_framework import DjangoFilterBackend from rest_framework import viewsets from rest_framework_extensions.mixins import NestedViewSetMixin @@ -29,6 +30,8 @@ class LabelViewSet(viewsets.ModelViewSet): class PlaybookViewSet(viewsets.ModelViewSet): queryset = models.Playbook.objects.all() serializer_class = serializers.PlaybookSerializer + filter_backends = (DjangoFilterBackend,) + filter_fields = ("name",) class PlaybookFilesDetail(NestedViewSetMixin, viewsets.ModelViewSet): diff --git a/ara/server/settings.py b/ara/server/settings.py index ce23f3f0..c76ff956 100644 --- a/ara/server/settings.py +++ b/ara/server/settings.py @@ -30,6 +30,7 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', 'corsheaders', 'rest_framework', + 'django_filters', 'ara.api', 'ara.server.apps.AraAdminConfig', ] diff --git a/requirements.txt b/requirements.txt index 73f1d822..82cddd83 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,3 +5,4 @@ djangorestframework django-cors-headers drf-extensions envparse +django-filter \ No newline at end of file