diff --git a/edxval/__init__.py b/edxval/__init__.py index ce09e541..c2df3f36 100644 --- a/edxval/__init__.py +++ b/edxval/__init__.py @@ -2,4 +2,4 @@ init """ -__version__ = '2.9.0' +__version__ = '2.9.1' diff --git a/edxval/api.py b/edxval/api.py index 67399b48..c98310b1 100644 --- a/edxval/api.py +++ b/edxval/api.py @@ -733,6 +733,29 @@ def get_videos_for_course(course_id, sort_field=None, sort_dir=SortDirection.asc ) +def get_transcript_languages(course_id, provider_type): + """ + Returns a list of languages for which transcripts are available for a course + + Args: + course_id (str): course id + provider_type (str): transcript provider type + + Returns: + (list): A list of language codes + """ + transcript_languages = set() + video_transcripts = VideoTranscript.objects.filter( + video__edx_video_id__in=CourseVideo.objects.filter( + course_id=course_id + ).values_list("video__edx_video_id", flat=True) + ).select_related("video") + for transcript in video_transcripts: + if transcript.provider == provider_type: + transcript_languages.add(transcript.language_code) + return list(transcript_languages) + + def get_course_videos_qset(course_id): """ Get a QuerySet of CourseVideos for a given course. diff --git a/edxval/tests/test_api.py b/edxval/tests/test_api.py index f440d692..423af9d7 100644 --- a/edxval/tests/test_api.py +++ b/edxval/tests/test_api.py @@ -3189,6 +3189,16 @@ def test_get_transcript_details_for_course_no_course_videos(self): self.assertEqual(len(course_transcript), 0) + def test_get_transcript_languages_for_course(self): + """ + Verify that `get_transcript_languages` api function works as expected. + """ + transcript_languages = api.get_transcript_languages(self.course_id1, TranscriptProviderType.THREE_PLAY_MEDIA) + self.assertEqual(transcript_languages, ['en']) + + transcript_languages = api.get_transcript_languages(self.course_id1, TranscriptProviderType.CIELO24) + self.assertEqual(transcript_languages, ['fr']) + @ddt class TranscriptPreferencesTest(TestCase):