Skip to content

Commit de1b99f

Browse files
author
Bernard Szabo
committed
feat: TNL-11812 reinstate file update methods
1 parent f807eb9 commit de1b99f

File tree

2 files changed

+33
-10
lines changed

2 files changed

+33
-10
lines changed

cms/djangoapps/contentstore/tasks.py

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,16 +1226,21 @@ def _retry_validation(url_list, course_key, retry_count=3):
12261226
for i in range(0, retry_count):
12271227
if retry_list:
12281228
LOGGER.debug(f'[Link Check] retry attempt #{i + 1}')
1229-
validated_url_list = asyncio.run(
1230-
_validate_urls_access_in_batches(retry_list, course_key, batch_size=100)
1231-
)
1232-
filetered_url_list, retry_list = _filter_by_status(validated_url_list)
1233-
results.extend(filetered_url_list)
1234-
1229+
retry_list = _retry_validation_and_filter(course_key, results, retry_list)
12351230
results.extend(retry_list)
12361231

12371232
return results
12381233

1234+
1235+
def _retry_validation_and_filter(course_key, results, retry_list):
1236+
validated_url_list = asyncio.run(
1237+
_validate_urls_access_in_batches(retry_list, course_key, batch_size=100)
1238+
)
1239+
filtered_url_list, retry_list = _filter_by_status(validated_url_list)
1240+
results.extend(filtered_url_list)
1241+
return retry_list
1242+
1243+
12391244
def _filter_by_status(results):
12401245
"""
12411246
Filter results by status.
@@ -1262,6 +1267,15 @@ def _filter_by_status(results):
12621267

12631268
return filtered_results, retry_list
12641269

1270+
def _save_broken_links_file(artifact, file_to_save):
1271+
artifact.file.save(name=os.path.basename(file_to_save.name), content=File(file_to_save))
1272+
artifact.save()
1273+
return True
1274+
1275+
def _write_broken_links_to_file(broken_or_locked_urls, broken_links_file):
1276+
with open(broken_links_file.name, 'w') as file:
1277+
json.dump(broken_or_locked_urls, file, indent=4)
1278+
12651279
def _check_broken_links(task_instance, user_id, course_key_string, language):
12661280
"""
12671281
Checks for broken links in a course. Store the results in a file.
@@ -1281,7 +1295,18 @@ def _check_broken_links(task_instance, user_id, course_key_string, language):
12811295

12821296
try:
12831297
task_instance.status.increment_completed_steps()
1284-
_record_broken_links(task_instance, broken_or_locked_urls, course_key)
1298+
1299+
file_name = str(course_key)
1300+
broken_links_file = NamedTemporaryFile(prefix=file_name + '.', suffix='.json')
1301+
LOGGER.debug(f'[Link Check] json file being generated at {broken_links_file.name}')
1302+
1303+
with open(broken_links_file.name, 'w') as file:
1304+
json.dump(broken_or_locked_urls, file, indent=4)
1305+
1306+
_write_broken_links_to_file(broken_or_locked_urls, broken_links_file)
1307+
1308+
artifact = UserTaskArtifact(status=task_instance.status, name='BrokenLinks')
1309+
_save_broken_links_file(artifact, broken_links_file)
12851310

12861311
# catch all exceptions so we can record useful error messages
12871312
except Exception as e: # pylint: disable=broad-except

cms/djangoapps/contentstore/tests/test_tasks.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
from openedx.core.djangoapps.embargo.models import Country, CountryAccessRule, RestrictedCourse
4545
from xmodule.modulestore import ModuleStoreEnum
4646
from xmodule.modulestore.django import modulestore # lint-amnesty, pylint: disable=wrong-import-order
47-
from xmodule.modulestore.tests.django_utils import TEST_DATA_SPLIT_MODULESTORE
47+
from xmodule.modulestore.tests.django_utils import TEST_DATA_SPLIT_MODULESTORE, ModuleStoreTestCase
4848
from xmodule.modulestore.tests.factories import CourseFactory # lint-amnesty, pylint: disable=wrong-import-order
4949
from celery import Task
5050

@@ -244,7 +244,6 @@ def setUp(self):
244244
]
245245

246246
@mock.patch('cms.djangoapps.contentstore.tasks.UserTaskArtifact', autospec=True)
247-
@mock.patch('cms.djangoapps.contentstore.tasks.UserTaskStatus', autospec=True)
248247
@mock.patch('cms.djangoapps.contentstore.tasks._scan_course_for_links')
249248
@mock.patch('cms.djangoapps.contentstore.tasks._save_broken_links_file', autospec=True)
250249
@mock.patch('cms.djangoapps.contentstore.tasks._write_broken_links_to_file', autospec=True)
@@ -253,7 +252,6 @@ def test_check_broken_links_stores_broken_and_locked_urls(
253252
mock_write_broken_links_to_file,
254253
mock_save_broken_links_file,
255254
mock_scan_course_for_links,
256-
_mock_user_task_status,
257255
mock_user_task_artifact
258256
):
259257
'''

0 commit comments

Comments
 (0)