Skip to content

Commit

Permalink
fix: return the downstream_usage_key list using a serializer
Browse files Browse the repository at this point in the history
  • Loading branch information
rpenido committed Feb 21, 2025
1 parent 6b27c09 commit 439bc0f
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
"""Module for v2 serializers."""

from cms.djangoapps.contentstore.rest_api.v2.serializers.downstreams import PublishableEntityLinksSerializer
from cms.djangoapps.contentstore.rest_api.v2.serializers.downstreams import (
PublishableEntityLinksSerializer,
PublishableEntityLinksUsageKeySerializer,
)
from cms.djangoapps.contentstore.rest_api.v2.serializers.home import CourseHomeTabSerializerV2
12 changes: 12 additions & 0 deletions cms/djangoapps/contentstore/rest_api/v2/serializers/downstreams.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,15 @@ def get_ready_to_sync(self, obj):
class Meta:
model = PublishableEntityLink
exclude = ['upstream_block', 'uuid']


class PublishableEntityLinksUsageKeySerializer(serializers.ModelSerializer):
"""
Serializer for returning a string list of the usage keys.
"""
def to_representation(self, instance: PublishableEntityLink) -> str:
return str(instance.downstream_usage_key)

class Meta:
model = PublishableEntityLink
fields = ('downstream_usage_key')
12 changes: 7 additions & 5 deletions cms/djangoapps/contentstore/rest_api/v2/views/downstreams.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,10 @@

from cms.djangoapps.contentstore.helpers import import_static_assets_for_library_sync
from cms.djangoapps.contentstore.models import PublishableEntityLink
from cms.djangoapps.contentstore.rest_api.v2.serializers import PublishableEntityLinksSerializer
from cms.djangoapps.contentstore.rest_api.v2.serializers import (
PublishableEntityLinksSerializer,
PublishableEntityLinksUsageKeySerializer,
)
from cms.lib.xblock.upstream_sync import (
BadDownstream,
BadUpstream,
Expand Down Expand Up @@ -156,15 +159,14 @@ def get(self, request: _AuthenticatedRequest, usage_key_string: str) -> Response
except InvalidKeyError as exc:
raise ValidationError(detail=f"Malformed usage key: {usage_key_string}") from exc

downstream_usage_key_list = (
links = (
PublishableEntityLink
.get_by_upstream_usage_key(upstream_usage_key=usage_key)
.values_list("downstream_usage_key", flat=True)
)

downstream_usage_key_str_list = [str(usage_key) for usage_key in downstream_usage_key_list]
serializer = PublishableEntityLinksUsageKeySerializer(links, many=True)

return Response(downstream_usage_key_str_list)
return Response(serializer.data)


@view_auth_classes(is_authenticated=True)
Expand Down

0 comments on commit 439bc0f

Please sign in to comment.