From ca13b4fd39e79370e4d08b64e2c5b0a7b3fdb393 Mon Sep 17 00:00:00 2001 From: XnpioChV Date: Thu, 8 May 2025 20:20:59 -0500 Subject: [PATCH 1/3] fix: Issues with get container children * 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 + 5 files changed, 4 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 539b3290631b..507822d3074e 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 @@ def from_component(cls, library_key, component, associated_collections=None): 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 2adad97970eb..d97a6100a648 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 546e7520b581..b6f4d82aeccb 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 19f33b7beb2c..06baa6fc4254 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 @@ def get(self, request, container_key: LibraryContainerLocator): } ] """ - 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 04c9e6a9901c..f063a128f67a 100644 --- a/openedx/core/djangoapps/content_libraries/rest_api/serializers.py +++ b/openedx/core/djangoapps/content_libraries/rest_api/serializers.py @@ -172,6 +172,7 @@ class LibraryXBlockMetadataSerializer(PublishableItemSerializer): Serializer for LibraryXBlockMetadata """ block_type = serializers.CharField(source="usage_key.block_type") + published_display_name = serializers.CharField() class LibraryXBlockTypeSerializer(serializers.Serializer): From 786caf501355ad7e13851a90cca80bb1f1488eae Mon Sep 17 00:00:00 2001 From: XnpioChV Date: Thu, 8 May 2025 20:52:39 -0500 Subject: [PATCH 2/3] fix: Broken tests --- .../content_libraries/tests/test_content_libraries.py | 2 ++ 1 file changed, 2 insertions(+) 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 e62a2b6f0243..e2fec3aee1ff 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 @@ def test_library_blocks(self): # pylint: disable=too-many-statements 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 @@ def test_library_blocks_studio_view(self): 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] From 0f781218c412f1ef6d16076bd5cb1ce2615fc64e Mon Sep 17 00:00:00 2001 From: XnpioChV Date: Fri, 9 May 2025 16:58:11 -0500 Subject: [PATCH 3/3] refactor: Move published_display_name to PublishableItemSerializer --- .../core/djangoapps/content_libraries/rest_api/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openedx/core/djangoapps/content_libraries/rest_api/serializers.py b/openedx/core/djangoapps/content_libraries/rest_api/serializers.py index f063a128f67a..38765f0b320f 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) @@ -172,7 +173,6 @@ class LibraryXBlockMetadataSerializer(PublishableItemSerializer): Serializer for LibraryXBlockMetadata """ block_type = serializers.CharField(source="usage_key.block_type") - published_display_name = serializers.CharField() class LibraryXBlockTypeSerializer(serializers.Serializer):