From 1aaa477a075074f4729c9e1dca91b66746c8d1bd Mon Sep 17 00:00:00 2001 From: Aadarsh Padiyath Date: Fri, 16 Oct 2026 14:23:44 -0400 Subject: [PATCH] CodeTailor: serve the backup puzzle for questions labeled *-ct-static PreTeXt's @codetailor can only request personalization, so a PreTeXt book has no way to mark a non-personalized copy of an exercise for an A/B . Added for a +# CodeTailor study in Fall 2026; it can be removed once that study ends. +STATIC_ARM_SUFFIX = "-ct-static" + + +def _is_static_arm(problem_id): + return bool(problem_id) and problem_id.endswith(STATIC_ARM_SUFFIX) + @router.post("/python_check") async def python_check(request: Request): @@ -532,7 +544,9 @@ async def parsons_scaffolding( parsonsexample = data.get("parsonsexample") problem_description = data.get("problem_description") internal_test_case = data.get("internal_test_case") - parsons_personalized = data.get("parsons_personalized", True) + parsons_personalized = data.get( + "parsons_personalized", True + ) and not _is_static_arm(problem_id) adaptive_attr = 'data-adaptive="true"' no_indent_attr = 'data-noindent="false"' @@ -665,7 +679,9 @@ async def parsons_scaffolding( personalization_level = data.get("personalization_level") parsonsexample = data.get("parsonsexample") problem_description = data.get("problem_description") - parsons_personalized = data.get("parsons_personalized", True) + parsons_personalized = data.get( + "parsons_personalized", True + ) and not _is_static_arm(problem_id) if not problem_id: return JSONResponse(