feat: Add transcript editor toggle and update related serializers and tests#267
Merged
Conversation
e2962ca to
b6c4c47
Compare
b6c4c47 to
92d7977
Compare
92d7977 to
9ad6810
Compare
viv-helix
approved these changes
May 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR adds support for a new in-platform transcript editor feature in Studio's videos page through a new waffle flag
contentstore.enable_transcript_editor. When enabled, course staff will be able to open an editor modal from the transcript row action menu and edit transcript cue text directly in the browser, with edits saved via a new PATCH API endpoint.Key Changes:
TRANSCRIPT_EDITORwaffle flag (default: False) tocms/djangoapps/contentstore/toggles.pyUser Impact:
The existing upload, download, and delete transcript flows remain unaffected.
Supporting information
contentstore.transcript_editor(CourseWaffleFlag)Testing instructions
Setup
make dev.provision make dev.up cd cmsTest 1: Verify waffle flag defaults to False
python manage.py shell >>> from cms.djangoapps.contentstore import toggles >>> from opaque_keys.edx.keys import CourseKey >>> course_key = CourseKey.from_string("course-v1:edX+DemoX+Demo_Course") >>> toggles.transcript_editor_enabled(course_key) FalseTest 2: Enable flag globally and verify
Waffle Flags > Flags > create new one >contentstore.enable_transcript_editor`curl -X GET "http://localhost:8000/api/courses/v1/course_waffle_flags/""transcript_editor": truein responseTest 3: Test per-course override
Test 4: Verify transcript upload returns correct status codes
Test via API:
Run Tests
Other information
Backwards Compatibility
Database Changes
WaffleFlagCourseOverrideModelfor per-course overridesSecurity
Accessibility
Special Concerns
Dependencies
Summary for Reviewers
This PR provides the foundational waffle flag infrastructure and API adjustments needed for the transcript editor feature. The main changes are:
The feature flag defaults to False, so there's zero impact on existing functionality until explicitly enabled.
Files Changed Summary
cms/djangoapps/contentstore/toggles.pyTRANSCRIPT_EDITORwaffle flag andtranscript_editor_enabled()helpercms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.pytranscript_editorfield toCourseWaffleFlagsSerializercms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_waffle_flags.pycms/djangoapps/contentstore/transcript_storage_handlers.pyupload_transcript()to return 200 for replacements, 201 for new uploads