revert: show empty container blocks from the course blocks api when called by mobile (#27707)

REVE-52 is merged and mobile
traffic from older app versions is < 5% of the mobile traffic.
Therefore we dont need changes from this PR 325fbe4eb2 (diff-c061bf405edf96531766b26cc2bcc2bb3639d851e5d9f844612c2ea57c35e56e)

LEARNER-8377
This commit is contained in:
jawad khan
2021-05-25 20:30:26 +05:00
committed by GitHub
parent 556e82493d
commit 15f33dc1b2
4 changed files with 3 additions and 67 deletions

View File

@@ -6,9 +6,7 @@ API function for retrieving course blocks data
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 lms.djangoapps.course_blocks.transformers.hide_empty import HideEmptyTransformer
from openedx.core.djangoapps.content.block_structure.transformers import BlockStructureTransformers
from openedx.core.lib.mobile_utils import is_request_from_mobile_app
from openedx.features.effort_estimation.api import EffortEstimationTransformer
from .serializers import BlockDictSerializer, BlockSerializer
@@ -98,10 +96,6 @@ def get_blocks(
if hide_access_denials:
transformers += [AccessDeniedMessageFilterTransformer()]
# TODO: Remove this after REVE-52 lands and old-mobile-app traffic falls to < 5% of mobile traffic
if is_request_from_mobile_app(request):
transformers += [HideEmptyTransformer()]
if include_effort_estimation:
transformers += [EffortEstimationTransformer()]

View File

@@ -108,11 +108,10 @@ class TestGetBlocks(SharedModuleStoreTestCase):
assert block['type'] == 'problem'
# TODO: Remove this class after REVE-52 lands and old-mobile-app traffic falls to < 5% of mobile traffic
@ddt.ddt
class TestGetBlocksMobileHack(SharedModuleStoreTestCase):
class TestGetBlocksVideoUrls(SharedModuleStoreTestCase):
"""
Tests that requests from the mobile app don't receive empty containers.
Tests the video blocks returned have their URL re-written for
encoded videos.
"""
@classmethod
@@ -143,19 +142,6 @@ class TestGetBlocksMobileHack(SharedModuleStoreTestCase):
self.request = RequestFactory().get("/dummy")
self.request.user = self.user
@ddt.data(
*product([True, False], ['chapter', 'sequential', 'vertical'])
)
@ddt.unpack
def test_empty_containers(self, is_mobile, container_type):
with patch('lms.djangoapps.course_api.blocks.api.is_request_from_mobile_app', return_value=is_mobile):
blocks = get_blocks(self.request, self.course.location)
full_container_key = self.course.id.make_usage_key(container_type, f'full_{container_type}')
assert str(full_container_key) in blocks['blocks']
empty_container_key = self.course.id.make_usage_key(container_type, f'empty_{container_type}')
assert_containment = self.assertNotIn if is_mobile else self.assertIn
assert_containment(str(empty_container_key), blocks['blocks'])
@patch('xmodule.video_module.VideoBlock.student_view_data')
def test_video_urls_rewrite(self, video_data_patch):
"""

View File

@@ -1,43 +0,0 @@
"""
Hide Empty Transformer implementation.
"""
# TODO: Remove this file after REVE-52 lands and old-mobile-app traffic falls to < 5% of mobile traffic
from openedx.core.djangoapps.content.block_structure.transformer import BlockStructureTransformer
class HideEmptyTransformer(BlockStructureTransformer):
"""
A transformer that removes any block from the course that could have
children but doesn't.
"""
WRITE_VERSION = 1
READ_VERSION = 1
@classmethod
def name(cls):
"""
Unique identifier for the transformer's class;
same identifier used in setup.py.
"""
return "hide_empty"
@classmethod
def collect(cls, block_structure):
"""
Collects any information that's necessary to execute this
transformer's transform method.
"""
block_structure.request_xblock_fields('children', 'has_children')
def transform(self, usage_info, block_structure):
def _filter(block_key):
has_children = block_structure.get_xblock_field(block_key, 'has_children')
children = block_structure.get_xblock_field(block_key, 'children')
return has_children and not any(child in block_structure for child in children)
for _ in block_structure.post_order_traversal(
filter_func=block_structure.create_removal_filter(_filter)
):
pass

View File

@@ -59,7 +59,6 @@ setup(
"start_date = lms.djangoapps.course_blocks.transformers.start_date:StartDateTransformer",
"user_partitions = lms.djangoapps.course_blocks.transformers.user_partitions:UserPartitionTransformer",
"visibility = lms.djangoapps.course_blocks.transformers.visibility:VisibilityTransformer",
"hide_empty = lms.djangoapps.course_blocks.transformers.hide_empty:HideEmptyTransformer",
"hidden_content = lms.djangoapps.course_blocks.transformers.hidden_content:HiddenContentTransformer",
"course_blocks_api = lms.djangoapps.course_api.blocks.transformers.blocks_api:BlocksAPITransformer",
"milestones = lms.djangoapps.course_api.blocks.transformers.milestones:MilestonesAndSpecialExamsTransformer", # lint-amnesty, pylint: disable=line-too-long