From 2ba9b7977f5f2e5795fa48d27796bcc0966c1387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Ch=C3=A1vez?= Date: Mon, 12 May 2025 09:44:41 -0500 Subject: [PATCH] fix: Issues with get container children [FC-0083] (#36686) * Fix published param to support strings * Add published_display_name to children response --- openedx/core/djangoapps/content_libraries/api/block_metadata.py | 1 + openedx/core/djangoapps/content_libraries/api/containers.py | 1 - openedx/core/djangoapps/content_libraries/api/libraries.py | 1 + .../core/djangoapps/content_libraries/rest_api/containers.py | 2 +- .../core/djangoapps/content_libraries/rest_api/serializers.py | 1 + .../content_libraries/tests/test_content_libraries.py | 2 ++ 6 files changed, 6 insertions(+), 2 deletions(-) diff --git a/openedx/core/djangoapps/content_libraries/api/block_metadata.py b/openedx/core/djangoapps/content_libraries/api/block_metadata.py index 539b329063..507822d307 100644 --- a/openedx/core/djangoapps/content_libraries/api/block_metadata.py +++ b/openedx/core/djangoapps/content_libraries/api/block_metadata.py @@ -57,6 +57,7 @@ class LibraryXBlockMetadata(PublishableItem): modified=draft.created, draft_version_num=draft.version_num, published_version_num=published.version_num if published else None, + published_display_name=published.title if published else None, last_published=None if last_publish_log is None else last_publish_log.published_at, published_by=published_by, last_draft_created=last_draft_created, diff --git a/openedx/core/djangoapps/content_libraries/api/containers.py b/openedx/core/djangoapps/content_libraries/api/containers.py index 2adad97970..d97a6100a6 100644 --- a/openedx/core/djangoapps/content_libraries/api/containers.py +++ b/openedx/core/djangoapps/content_libraries/api/containers.py @@ -110,7 +110,6 @@ class ContainerMetadata(PublishableItem): container_key: LibraryContainerLocator container_type: ContainerType container_pk: int - published_display_name: str | None @classmethod def from_container(cls, library_key, container: Container, associated_collections=None): diff --git a/openedx/core/djangoapps/content_libraries/api/libraries.py b/openedx/core/djangoapps/content_libraries/api/libraries.py index 546e7520b5..b6f4d82aec 100644 --- a/openedx/core/djangoapps/content_libraries/api/libraries.py +++ b/openedx/core/djangoapps/content_libraries/api/libraries.py @@ -191,6 +191,7 @@ class PublishableItem(LibraryItem): """ draft_version_num: int published_version_num: int | None = None + published_display_name: str | None last_published: datetime | None = None # The username of the user who last published this. published_by: str = "" diff --git a/openedx/core/djangoapps/content_libraries/rest_api/containers.py b/openedx/core/djangoapps/content_libraries/rest_api/containers.py index 19f33b7beb..06baa6fc42 100644 --- a/openedx/core/djangoapps/content_libraries/rest_api/containers.py +++ b/openedx/core/djangoapps/content_libraries/rest_api/containers.py @@ -178,7 +178,7 @@ class LibraryContainerChildrenView(GenericAPIView): } ] """ - published = request.GET.get('published', False) + published = request.GET.get('published', 'false').lower() == 'true' api.require_permission_for_library_key( container_key.lib_key, request.user, diff --git a/openedx/core/djangoapps/content_libraries/rest_api/serializers.py b/openedx/core/djangoapps/content_libraries/rest_api/serializers.py index 04c9e6a990..38765f0b32 100644 --- a/openedx/core/djangoapps/content_libraries/rest_api/serializers.py +++ b/openedx/core/djangoapps/content_libraries/rest_api/serializers.py @@ -138,6 +138,7 @@ class PublishableItemSerializer(serializers.Serializer): """ id = serializers.SerializerMethodField() display_name = serializers.CharField() + published_display_name = serializers.CharField(required=False) tags_count = serializers.IntegerField(read_only=True) last_published = serializers.DateTimeField(format=DATETIME_FORMAT, read_only=True) published_by = serializers.CharField(read_only=True) diff --git a/openedx/core/djangoapps/content_libraries/tests/test_content_libraries.py b/openedx/core/djangoapps/content_libraries/tests/test_content_libraries.py index e62a2b6f02..e2fec3aee1 100644 --- a/openedx/core/djangoapps/content_libraries/tests/test_content_libraries.py +++ b/openedx/core/djangoapps/content_libraries/tests/test_content_libraries.py @@ -327,6 +327,7 @@ class ContentLibrariesTestCase(ContentLibrariesRestApiTest): block_data["has_unpublished_changes"] = False block_data["last_published"] = publish_date.isoformat().replace('+00:00', 'Z') block_data["published_by"] = "Bob" + block_data["published_display_name"] = "Blank Problem" self.assertDictContainsEntries(self._get_library_block(block_id), block_data) assert self._get_library_blocks(lib_id)['results'] == [block_data] @@ -440,6 +441,7 @@ class ContentLibrariesTestCase(ContentLibrariesRestApiTest): block_data["has_unpublished_changes"] = False block_data["last_published"] = publish_date.isoformat().replace('+00:00', 'Z') block_data["published_by"] = "Bob" + block_data["published_display_name"] = "Text" self.assertDictContainsEntries(self._get_library_block(block_id), block_data) assert self._get_library_blocks(lib_id)['results'] == [block_data]