Repository navigation
Remove slideshow support #6353
Description
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
Slideshow content can no longer be created: the Studio editor never supported it, and ricecooker removed SlideshowNode, so only Studio's ricecooker endpoint still accepts slides, and no current ricecooker sends them. Production holds 81 slideshow nodes, all in test or QA channels, with 85 SlideshowSlide rows created between 2019 and 2021. File.slideshow_slide's index costs 6.6 GB to cover those 85 rows. Slideshow support and the existing slideshow nodes should be removed from Studio.
Complexity: Medium
Target branch: hotfixes
Context
-
Slideshow nodes on production, all in test channels:
Channel Tree Slideshow nodes Prueba (deleted) staging, main 67 Studio Test Channel 1, Studio Test Channel 4 main, trash 4 Test QA Channel 66 main, trash 2 Kolibri QA Channel, Kolibri QAv2, Regression fixture, Shared resources, Slides Slides Slides! (×2), Velox testing channel main 7 (no channel) — 1 -
The 85 slide
Files are attached only throughslideshow_slide, never to a node. -
Slideshow code in Studio:
SlideshowSlideandFile.slideshow_slide- the ricecooker endpoint:
views/internal.py:811-824,create_slides,map_files_to_slideshow_slide_item - publish:
utils/publish.py:408-409callscreate_slideshow_manifest - garbage collection:
utils/garbage_collect.py:208
-
Ricecooker removed
SlideshowNode(docs/migration.md:17-18). -
Kolibri still ships
kolibri.plugins.slideshow_viewer, so channels already published with slideshows keep rendering.
The Change
- The existing slideshow nodes should be deleted, along with their slides and slide
Files. SlideshowSlideandFile.slideshow_slideshould be removed. The column drop takes a briefACCESS EXCLUSIVElock oncontentcuration_file, so the migration should set alock_timeoutand fail rather than retry.- The ricecooker endpoint should reject a
slideshownode with a 400 rather than create it. - Publish should no longer build slideshow manifests.
Out of Scope
- The
slideshowkind in le-utils, and Kolibri'sslideshow_viewer.
Acceptance Criteria
General
- After deploy to
hotfixes, nocontentnoderow haskind_id = 'slideshow' -
contentcuration_slideshowslideno longer exists, andcontentcuration_filehas noslideshow_slide_idcolumn or index - The migration aborts with a non-zero exit when it can't acquire its lock within
lock_timeout - Uploading a
slideshownode through the ricecooker endpoint returns a 400 -
makemigrations --checkreports no changes
Testing
- A test covers the ricecooker endpoint rejecting a
slideshownode
AI usage
Drafted with Claude Code, which measured slideshow usage on production through read-only queries in the disposable debugging job and traced the slideshow code paths. I chose to remove the feature and delete the existing nodes.

Activity