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.
* feat: Implement paste button
* chore: improve docs and add tests for python API
* fix: drive-by fix to use a better API for comparing XML
* feat: track which XBlock something was copied from
* feat: add tests
* feat: enable import linter so content_staging's public API is respected
* fix: error seen when trying to paste drag-and-drop-v2 blocks
* fix: use strip_text=True consistently for XML comparisons
* refactor: rename get_user_clipboard_status to get_user_clipboard
* feat: Better error reporting when pasting in Studio
* chore: convert new test suite to pytest assertions
* refactor: push READY status check into the API per review suggestion
* fix: use strip_text=True consistently for XML comparisons
* fix: store "copied_from_block" as a string to avoid Reference field issues
* fix: minor lint error
* refactor: move data types to data.py per OEP-49
* feat: add endpoint to tell if video sharing feature is enabled for a course
* feat: create video setting endpoint
* feat: move toggle out of lms
* docs: update toggle location in comment
* docs: fix toggle annotation
This will ensure that errors raised by these tasks will alert the right
team. `send_course_enrollment_email` is the one I set out to fix, but I
discovered a few others.
I located tasks that were missing decorators by running the following
search and visually inspecting the results, although semgrep might be able
to do better:
```
ack '^@.*task|^@set_code_owner_attribute' cms lms common openedx xmodule --ignore-dir=tests --python
```
Also, add more detailed explanation of why a couple of tasks can't use the
decorator. This should only be an issue on tasks inheriting from
UserTaskMixin, which in practice is just CourseExportTask and
CourseImportTask (and the apparently unused EnrollmentReadTask and
EnrollmentWriteTask), via UserTask.
Adds a dropdown to select the organization. The dropdown will only be activated for users with CourseCreator permission to specific organizations in Studio.
Use cases:
When FEATURES['ENABLE_CREATOR_GROUP'] = True and the user has CourseCreator permission granted, a dropdown will appear with all specific organizations allowed. In case of all_organizations setting is enabled, all organizations will appear in the dropdown.
In case the user is staff, he can create organizations it will work as before
* feat!: update timestamp of catalog-info-changed signal
When producing the catalog-info-changed signal, we
now get the timestamp of the change from modulestore,
rather than relying on the current time at the time
of the event send.
BREAKING CHANGE: This will adjust the meaning of the
time metadata for new catalog-info-changed events.
---------
Co-authored-by: Robert Raposa <rraposa@edx.org>
This is part of Old Mongo removal. Also in this commit:
* fixed 400 error for cms old_style assets
* fix TEST_DATA_SPLIT_MODULESTORE import for test_course_index