Updates to depend on the latest version of XBlock, which includes
support for service-to-service (thirdparty) handler urls, which aren't
authenticated with a user (unlike handler requests coming from the
xblock client-side javascript).
Co-author: Ned Batchelder <ned@edx.org>
Webob represents uploaded files as cgi.FieldStorage objects. The
XModule code expects pure Python file objects. Each FieldStorage object
is wrapped to present the proper file interface, with file names.
LMS-1492
Having ENABLE_S3_GRADE_DOWNLOADS enabled by default in common.py
could lead to surprising behavior for folks downstream. They'd
suddenly see a grade download screen on their new instructor
dashboard, but the links by default would be local files and
couldn't be used in an actual production environment. So we disable
by default and let people explicitly enable it and set it up for
S3 if they wish.
LMS-58
Restrict grade report generation to 'is_superuser' users (can be overridden with
feature flag ALLOW_COURSE_STAFF_GRADE_DOWNLOADS); all staff users can download
generated files.
LMS-58
This allows XModules (specifically CombinedOpenEnded) to use ajax_url
during their init functions (which would, before, have thrown an
exception).
[LMS-1493]
Under normal operation, XModules are reloaded on each request from a
student. CombinedOpenEnded modules have code that runs at initialization
that validates the students state. These changes makes that code run
during several long-form unit tests (testing CombinedOpenEnded across
multiple 'requests').
These tests are marked as expectedFailure because they now exhibit the
same failures as observed in [LMS-1493] (namely, the students state gets
reset, because CombinedOpenEnded interprets system.ajax_url raising an
error as meaning that the problem definition and the student answers are
in conflict)
AJAX requests on forums pages occasionally fail (usually when a request
to the comments service times out), but the user is not made aware of
the failure. This manifests as either the system not appearing to store
state (e.g. if an attempt to flag a post fails) or something taking
forever to load. Now, a modal will pop up to alert the user that a
request has failed and instruct them to reload the page.
In the longer term, we should fix each user gesture that results in an
AJAX call to gracefully handle a failure by resetting the state of the
world appropriately and aleritng the user.
JIRA: FOR-37