diff --git a/ara/api/serializers.py b/ara/api/serializers.py index 29e4e0d..40e67cc 100644 --- a/ara/api/serializers.py +++ b/ara/api/serializers.py @@ -151,6 +151,54 @@ class LabelSerializer(serializers.ModelSerializer): ) +class TaskSerializer(DurationSerializer): + class Meta: + model = models.Task + fields = "__all__" + + tags = CompressedObjectField( + default=zlib.compress(json.dumps([]).encode("utf8")), help_text="A JSON list containing Ansible tags" + ) + + +class SimpleTaskSerializer(serializers.ModelSerializer): + class Meta: + model = models.Task + fields = ("id", "name") + + +class RecordSerializer(serializers.ModelSerializer): + class Meta: + model = models.Record + fields = "__all__" + + value = CompressedObjectField( + default=zlib.compress(json.dumps("").encode("utf8")), + help_text="A string, list, dict, json or other formatted data", + ) + + +class PlaySerializer(DurationSerializer): + class Meta: + model = models.Play + fields = "__all__" + + hosts = HostSerializer(read_only=True, many=True) + results = ResultSerializer(read_only=True, many=True) + + +class SimplePlaySerializer(serializers.ModelSerializer): + class Meta: + model = models.Play + fields = "__all__" + + +class StatsSerializer(serializers.ModelSerializer): + class Meta: + model = models.Stats + fields = "__all__" + + class PlaybookSerializer(DurationSerializer): class Meta: model = models.Playbook @@ -160,6 +208,9 @@ class PlaybookSerializer(DurationSerializer): files = FileSerializer(many=True, default=[]) hosts = HostSerializer(many=True, default=[]) labels = LabelSerializer(many=True, default=[]) + tasks = SimpleTaskSerializer(many=True, read_only=True, default=[]) + plays = SimplePlaySerializer(many=True, read_only=True, default=[]) + records = RecordSerializer(many=True, read_only=True, default=[]) def create(self, validated_data): # Create the playbook without the file and label references for now @@ -177,39 +228,3 @@ class PlaybookSerializer(DurationSerializer): playbook.labels.add(models.Label.objects.create(**label)) return playbook - - -class PlaySerializer(DurationSerializer): - class Meta: - model = models.Play - fields = "__all__" - - hosts = HostSerializer(read_only=True, many=True) - results = ResultSerializer(read_only=True, many=True) - - -class TaskSerializer(DurationSerializer): - class Meta: - model = models.Task - fields = "__all__" - - tags = CompressedObjectField( - default=zlib.compress(json.dumps([]).encode("utf8")), help_text="A JSON list containing Ansible tags" - ) - - -class RecordSerializer(serializers.ModelSerializer): - class Meta: - model = models.Record - fields = "__all__" - - value = CompressedObjectField( - default=zlib.compress(json.dumps("").encode("utf8")), - help_text="A string, list, dict, json or other formatted data", - ) - - -class StatsSerializer(serializers.ModelSerializer): - class Meta: - model = models.Stats - fields = "__all__" diff --git a/ara/api/tests/tests_playbook.py b/ara/api/tests/tests_playbook.py index 2bbc315..39756de 100644 --- a/ara/api/tests/tests_playbook.py +++ b/ara/api/tests/tests_playbook.py @@ -59,10 +59,17 @@ class PlaybookTestCase(APITestCase): self.assertEqual(0, len(request.data["results"])) def test_get_playbooks(self): - playbook = factories.PlaybookFactory() + expected_playbook = factories.PlaybookFactory() request = self.client.get("/api/v1/playbooks") self.assertEqual(1, len(request.data["results"])) - self.assertEqual(playbook.ansible_version, request.data["results"][0]["ansible_version"]) + self.assertEqual(1, request.data["count"]) + playbook = request.data["results"][0] + self.assertEqual(playbook["ansible_version"], expected_playbook.ansible_version) + self.assertEqual(len(playbook["files"]), 0) + self.assertEqual(len(playbook["hosts"]), 0) + self.assertEqual(len(playbook["tasks"]), 0) + self.assertEqual(len(playbook["records"]), 0) + self.assertEqual(len(playbook["plays"]), 0) def test_delete_playbook(self): playbook = factories.PlaybookFactory()