Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion edxval/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
init
"""

__version__ = '4.0.0'
__version__ = '4.0.1'
13 changes: 10 additions & 3 deletions edxval/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,14 @@ def get_video_transcript_data(video_id, language_code):
video_transcript = VideoTranscript.get_or_none(video_id, language_code)
if video_transcript:
try:
return dict(file_name=video_transcript.filename, content=video_transcript.transcript.file.read())
return dict(
file_name=video_transcript.filename,
content=video_transcript.transcript.file.read()
)
except FileNotFoundError as f_err:
err_msg = f"Transcript for video {video_id} not found: {f_err.filename}"
logger.error(err_msg)
raise TranscriptNotFoundError(err_msg) from f_err
except Exception:
logger.exception(
'[edx-val] Error while retrieving transcript for video=%s -- language_code=%s',
Expand Down Expand Up @@ -1131,9 +1138,9 @@ def create_transcripts_xml(video_id, video_el, resource_fs, static_dir):
static_dir=static_file_dir
)
transcript_files_map[language_code] = transcript_filename
except TranscriptsGenerationException:
except (TranscriptsGenerationException, TranscriptNotFoundError):
# we don't want to halt export in this case, just log and move to the next transcript.
logger.exception('[VAL] Error while generating "%s" transcript for video["%s"].', language_code, video_id)
logger.error('[VAL] Error while generating "%s" transcript for video["%s"].', language_code, video_id)
continue

SubElement(
Expand Down
14 changes: 8 additions & 6 deletions edxval/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
VideoSortField,
)
from edxval.config.waffle import OVERRIDE_EXISTING_IMPORTED_TRANSCRIPTS
from edxval.exceptions import TranscriptNotFoundError
from edxval.models import (
LIST_MAX_ITEMS,
CourseVideo,
Expand Down Expand Up @@ -2791,14 +2792,15 @@ def test_get_video_transcript_data_exception(self, mock_logger):
"""
video_id = 'medium-soaker'
language_code = 'zh'
with self.assertRaises(IOError):

with self.assertRaises(TranscriptNotFoundError):
api.get_video_transcript_data(video_id, language_code)

mock_logger.exception.assert_called_with(
'[edx-val] Error while retrieving transcript for video=%s -- language_code=%s',
video_id,
language_code,
)
args, _kwargs = mock_logger.error.call_args
logged_msg = args[0]
assert logged_msg.startswith("Transcript for video medium-soaker not found:")
# Exact path varies depending on how test settings config MEDIA
assert logged_msg.endswith("non/existent/transcript/path")

def test_get_video_transcript_data_not_found(self):
"""
Expand Down
Loading