This re-applies commit 36cc415 with handling an invalid context_key in the
`PartitionService`. It can happen when rendering a `LibraryContentBlock` in
Studio because this service is initialized by the modulestore when validating
an XBlock to gather its error messages in the `studio_xblock_wrapper`.
* Revert "feat: remove `field-data` service from runtime initialization"
This reverts commit 6c435bb68c.
* Revert "feat: remove field data binding from the runtime"
This reverts commit 5f46ea52cd.
BREAKING CHANGE: This removes the following deprecated shims from the runtime:
`replace_urls`, `replace_course_urls`, `replace_jump_to_id_urls`. XBlocks need
to use the `replace_urls` service instead.
The XQueueService is used only by the ProblemBlock. Therefore, we are moving
it out of the runtime, and into the ProblemBlock, where it's initialized only
when it's going to be used.
lms/djangoapps/courseware/tests/test_block_render.py:
DeprecationWarning: runtime.seed is deprecated. Please use the user service `user_id` instead.
DeprecationWarning: runtime.user_id is deprecated. Use block.scope_ids.user_id or the user service instead.
DeprecationWarning: runtime.user_is_staff is deprecated. Please use the user service instead.
DeprecationWarning: runtime.get_user_role is deprecated. Please use the user service instead.
...
After changes from #31472, the user service of a "leaf" XBlock gets overridden
with the one created for its parent (SequenceBlock). Therefore, the
`requires_per_student_anonymous_id` is ignored in these XBlocks. The
subsequent renders of an XBlock (e.g., when requesting the solution) use
the student-specific IDs.
This removes choosing the proper ID (course-specific or student-specific) from
the runtime initialization. Instead, both IDs are passed to the user service.
There are only two XBlocks that relied on the
`requires_per_student_anonymous_id` - `ProblemBlock` and `HtmlBlock`. They
now request the "deprecated" (student-specific) user ID directly from the user
service.