diff --git a/ara/api/tests/tests_playbook.py b/ara/api/tests/tests_playbook.py index 7bc845c..b3bf9cb 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 964e5cc..e6c4fef 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 ce23f3f..c76ff95 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 73f1d82..82cddd8 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