feat: add discussions context to course blocks API (#29300)
Add a new course blocks transformer that adds discussion context for units.
This commit is contained in:
@@ -7,6 +7,7 @@ import lms.djangoapps.course_blocks.api as course_blocks_api
|
||||
from lms.djangoapps.course_blocks.transformers.access_denied_filter import AccessDeniedMessageFilterTransformer
|
||||
from lms.djangoapps.course_blocks.transformers.hidden_content import HiddenContentTransformer
|
||||
from openedx.core.djangoapps.content.block_structure.transformers import BlockStructureTransformers
|
||||
from openedx.core.djangoapps.discussions.transformers import DiscussionsTopicLinkTransformer
|
||||
from openedx.features.effort_estimation.api import EffortEstimationTransformer
|
||||
|
||||
from .serializers import BlockDictSerializer, BlockSerializer
|
||||
@@ -75,6 +76,10 @@ def get_blocks(
|
||||
include_gated_sections = 'show_gated_sections' in requested_fields
|
||||
include_has_scheduled_content = 'has_scheduled_content' in requested_fields
|
||||
include_special_exams = 'special_exam_info' in requested_fields
|
||||
include_discussions_context = (
|
||||
DiscussionsTopicLinkTransformer.EMBED_URL in requested_fields or
|
||||
DiscussionsTopicLinkTransformer.EXTERNAL_ID in requested_fields
|
||||
)
|
||||
|
||||
if user is not None:
|
||||
transformers += course_blocks_api.get_course_block_access_transformers(user)
|
||||
@@ -99,13 +104,16 @@ def get_blocks(
|
||||
if include_effort_estimation:
|
||||
transformers += [EffortEstimationTransformer()]
|
||||
|
||||
if include_discussions_context:
|
||||
transformers += [DiscussionsTopicLinkTransformer()]
|
||||
|
||||
transformers += [
|
||||
BlocksAPITransformer(
|
||||
block_counts,
|
||||
student_view_data,
|
||||
depth,
|
||||
nav_depth
|
||||
)
|
||||
),
|
||||
]
|
||||
|
||||
# transform
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
Serializers for Course Blocks related return objects.
|
||||
"""
|
||||
|
||||
|
||||
from django.conf import settings
|
||||
from rest_framework import serializers
|
||||
from rest_framework.reverse import reverse
|
||||
|
||||
from lms.djangoapps.course_blocks.transformers.visibility import VisibilityTransformer
|
||||
from openedx.core.djangoapps.discussions.transformers import DiscussionsTopicLinkTransformer
|
||||
|
||||
from .transformers.block_completion import BlockCompletionTransformer
|
||||
from .transformers.block_counts import BlockCountsTransformer
|
||||
@@ -21,13 +21,14 @@ class SupportedFieldType:
|
||||
"""
|
||||
Metadata about fields supported by different transformers
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
block_field_name,
|
||||
transformer=None,
|
||||
requested_field_name=None,
|
||||
serializer_field_name=None,
|
||||
default_value=None
|
||||
self,
|
||||
block_field_name,
|
||||
transformer=None,
|
||||
requested_field_name=None,
|
||||
serializer_field_name=None,
|
||||
default_value=None
|
||||
):
|
||||
self.transformer = transformer
|
||||
self.block_field_name = block_field_name
|
||||
@@ -82,6 +83,8 @@ SUPPORTED_FIELDS = [
|
||||
SupportedFieldType(BlockCompletionTransformer.COMPLETION, BlockCompletionTransformer),
|
||||
SupportedFieldType(BlockCompletionTransformer.COMPLETE),
|
||||
SupportedFieldType(BlockCompletionTransformer.RESUME_BLOCK),
|
||||
SupportedFieldType(DiscussionsTopicLinkTransformer.EXTERNAL_ID),
|
||||
SupportedFieldType(DiscussionsTopicLinkTransformer.EMBED_URL),
|
||||
|
||||
*[SupportedFieldType(field_name) for field_name in ExtraFieldsTransformer.get_requested_extra_fields()],
|
||||
]
|
||||
@@ -111,6 +114,7 @@ class BlockSerializer(serializers.Serializer): # pylint: disable=abstract-metho
|
||||
"""
|
||||
Serializer for single course block
|
||||
"""
|
||||
|
||||
def _get_field(self, block_key, transformer, field_name, default):
|
||||
"""
|
||||
Get the field value requested. The field may be an XBlock field, a
|
||||
|
||||
Reference in New Issue
Block a user