From d3a7f86f5230ead3259e105d22959753ad3fffb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=B2=D0=B0=D0=BD=20=D0=9D=D1=94=D0=B4=D1=94=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=96=D1=86=D0=B5=D0=B2?= Date: Wed, 19 Jun 2024 20:45:12 +0300 Subject: [PATCH] fix: [AXM-748] fix after review --- openedx/features/offline_mode/assets_management.py | 2 +- openedx/features/offline_mode/renderer.py | 1 - openedx/features/offline_mode/tasks.py | 5 ++++- openedx/features/offline_mode/utils.py | 5 ++++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/openedx/features/offline_mode/assets_management.py b/openedx/features/offline_mode/assets_management.py index 1418c7b4e46b..01804d69ef67 100644 --- a/openedx/features/offline_mode/assets_management.py +++ b/openedx/features/offline_mode/assets_management.py @@ -59,7 +59,7 @@ def save_asset_file(temp_dir, xblock, path, filename): content = read_static_file(static_path) file_path = os.path.join(temp_dir, 'assets', filename) except (FileNotFoundError, ItemNotFoundError, NotFoundError): - log.info(f"Asset not found: {filename}") + log.warning(f"Asset not found: {filename}, during offline content generation.") else: create_subdirectories_for_asset(file_path) diff --git a/openedx/features/offline_mode/renderer.py b/openedx/features/offline_mode/renderer.py index c0603b3c831e..09258b4ef060 100644 --- a/openedx/features/offline_mode/renderer.py +++ b/openedx/features/offline_mode/renderer.py @@ -81,7 +81,6 @@ def render_xblock_from_lms(self): str(self.usage_key), disable_staff_debug_info=True, course=course, - will_recheck_access=False, ) enable_completion_on_view_service = False diff --git a/openedx/features/offline_mode/tasks.py b/openedx/features/offline_mode/tasks.py index d98b87384e6f..31fc6dc1d0a6 100644 --- a/openedx/features/offline_mode/tasks.py +++ b/openedx/features/offline_mode/tasks.py @@ -3,6 +3,7 @@ """ from celery import shared_task from edx_django_utils.monitoring import set_code_owner_attribute +from django.http.response import Http404 from opaque_keys.edx.keys import CourseKey, UsageKey from xmodule.modulestore.django import modulestore @@ -17,6 +18,8 @@ def generate_offline_content_for_course(course_id): """ Generates offline content for all supported XBlocks in the course. + + Blocks that are closed to responses won't be processed. """ course_key = CourseKey.from_string(course_id) for offline_supported_block_type in OFFLINE_SUPPORTED_XBLOCKS: @@ -28,7 +31,7 @@ def generate_offline_content_for_course(course_id): @shared_task( - autoretry_for=(Exception,), + autoretry_for=(Exception, Http404), retry_backoff=RETRY_BACKOFF_INITIAL_TIMEOUT, retry_kwargs={'max_retries': MAX_RETRY_ATTEMPTS} ) diff --git a/openedx/features/offline_mode/utils.py b/openedx/features/offline_mode/utils.py index c1ae7efa86b4..015ae6285996 100644 --- a/openedx/features/offline_mode/utils.py +++ b/openedx/features/offline_mode/utils.py @@ -38,7 +38,10 @@ def generate_offline_content(xblock, html_data): save_xblock_html(tmp_dir, xblock, html_data) create_zip_file(tmp_dir, base_path, f'{xblock.location.block_id}.zip') except Http404: - log.error(f'Block {xblock.location.block_id} for course {xblock.location.course_key} not found.') + log.error( + f'Block {xblock.location.block_id} cannot be fetched from course' + f' {xblock.location.course_key} during offline content generation.' + ) finally: shutil.rmtree(tmp_dir, ignore_errors=True)