The _id comes back as a dict and it's in the wrong order compared to the
dict stored in mongo. This results in lookups for deletion failing when
we use the '_id' as the lookup key.
Luckily the delete function also takes the asset_key as a valid key to
delete by so we just use that instead.
Treat transcript content as unicode strings and convert them at any edge
where we encounter them. One decision made here was to not update
edx-val it treats transcripts as byte but is much closer to the actual
files so it makes more sense over there. But within the platform they
are generally passed around as serialized json and so it's much better
for them to be unicode.
* Enlarges component modal for easier editing
* Allows display name to be edited in place
* Improves markdown button labeling
* Moves markdown cheatsheet to the edit modal, for quick reference
Update the tests around static_file code to use byte streams instead of
string streams for generating static content. This is a fix to get
these tests passing on python 3.
This commit introduces the changes needed for XBlocks in Blockstore to save
their user state into CSM. Before this commit, all student state for Blockstore
blocks was ephemeral (in-process dict store).
Notes:
* The main risk factor of this PR is that it adds non-course keys to the
course_id field in CSM. If any code (like analytics?) reads course keys
directly out of CSM and doesn't have graceful handling for key types it
doesn't recognize, it could cause an issue. With the included changes to
opaque-keys, calling CourseKey.from_string(...) on these values will raise
InvalidKeyError since they're not CourseKeys. (But calling
LearningContextKey.from_string(...) will work for both course and library
keys.)
* This commit introduces a slight regression for the Studio view of XBlocks in
Blockstore content libraries: their state is now lost from request to request.
I have a follow up PR to give them a proper studio-appropriate state store,
but I want to review it separately so it doesn't hold up this PR and we can
test this PR on its own.
test fixes
changes made as suggested
test fixes
test fixes for python 2
test fixes
python 3 fixes
test fixes
changes made as suggested
test fixes
test fixes for python 2
test fixes
minor fixes
python 3 fixes
minor changes