refactor: include container display name in children api (#37429)

This helps us avoid additional API calls just to fetch display name of
the container block that is being previewed.
This commit is contained in:
Navin Karkera
2025-10-08 01:12:57 +05:30
committed by GitHub
parent d484910052
commit 718dac1e7b
3 changed files with 8 additions and 3 deletions

View File

@@ -180,3 +180,4 @@ class ContainerChildrenSerializer(serializers.Serializer):
children = ContainerChildSerializer(many=True)
is_published = serializers.BooleanField()
can_paste_component = serializers.BooleanField()
display_name = serializers.CharField()

View File

@@ -230,6 +230,7 @@ class ContainerChildrenView(APIView, ContainerHandlerMixin):
],
"is_published": false,
"can_paste_component": true,
"display_name": "Vertical block 1"
}
```
"""
@@ -277,6 +278,7 @@ class ContainerChildrenView(APIView, ContainerHandlerMixin):
"children": children,
"is_published": is_published,
"can_paste_component": is_course,
"display_name": current_xblock.display_name_with_default,
}
serializer = ContainerChildrenSerializer(container_data)
return Response(serializer.data)

View File

@@ -204,9 +204,11 @@ class ContainerVerticalViewTest(BaseXBlockContainer):
url = self.get_reverse_url(self.vertical.location)
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.data["children"]), 2)
self.assertFalse(response.data["is_published"])
self.assertTrue(response.data["can_paste_component"])
data = response.json()
self.assertEqual(len(data["children"]), 2)
self.assertFalse(data["is_published"])
self.assertTrue(data["can_paste_component"])
self.assertEqual(data["display_name"], "Unit")
def test_xblock_is_published(self):
"""