Python 3 changed how rounding is performed. In Python 2, .625 rounded to
.63 (as our grading code rounds it, so the test passed). In Python 3,
.625 rounds to .62. This fixes the test by avoiding round() to
calculate the expected value, and instead simply using the value we
expect.
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.
Changed <aside> tag to <div> tag according to the accessibility guidelines
mentioned in AXE 3.3
<aside> tag should not be a child of <main> hence replaced the
<aside> tag with the <div> tag.
This is the third in a series of commits to create
a Python API for the LMS program_enrollments app.
It does the following:
* Creates api/ folder.
* Moves link_program_enrollments.py to api/linking.py
* Creates api/reading.py for enrollment-fetching
functions.
* Updates rest of app to use api/reading.py when
it was going directly through the models before.
* Other misc. cleanup (isorting, unicode_literals,
line breaks, etc).
Still to do:
* Create api/writing.py and update app to use it instead
of going directly through models.
* Create api/reset.py and api/expire.py, which the management
commands call out to.
EDUCATOR-4321
We are currently running this plugin from a has directly off of master
to get support for a newer version of DJDT. However even on master
there is not yet support for python 3. We're running into this when
running runserver and when collecting static assets.
A quick survey of the development team at edX shows that people are no
longer actively using this debug panel.(14 responders all saying no to
the question "In the last year have you used the mongo portion of the
django-debug-toolbar in edx-platform?")
This makes sense since the module store and courseware related
developement is not very active right now. Given all this, I'm removing
this toolbar for now and if we need it again we can survey what's
available at that time to choose the best tool.