* Implement a ViewedEvent handling system which calls handlers when a
block has been viewed for 5 seconds (configurable).
* Hook up Verticals to register their children blocks with this event,
and submit completions once seen.
OSPR-2093
OC-3358
Update the VideoModule to publish a completion event when the player
reaches 95% complete, and submit a BlockCompletion when that event
occurs.
OC-3091
MCKIN-5897
In the absence of an EDX_PLATFORM_VERSION OS env variable, we used to
calculate the current version by looking at the current git revision of
the edx-platform repo. This was an expensive calculation (~7% of startup
costs). It also turns out that at some point we stopped setting that env
variable anywhere, so it always fell back to recalculating it.
With this commit, we'll start reading the code version from the env JSON
files, and fall back to "unknown" rather than doing the dealer.git call.
This new management command will search for possible entitlements
that are languishing in the database and expire them if they can
be according to our policy.
This is meant to be run on a regular basis to clear out old
entitlements.
LEARNER-3087
The LMS and edx-enterprise currently communicate via REST APIs, even
though they are all running within the same service.
Currently API URLs are constructed using LMS_ROOT_URL, but that is
problematic on some systems where the external LMS_ROOT_URL is not
accessible from the private network, or routing internal requests via
the external URL is not desireable.
This patch introduces a new setting variable LMS_INTERNAL_ROOT_URL which
defaults to the value of LMS_ROOT_URL for backwards compatibility.
The LMS and edx-enterprise will use LMS_INTERNAL_ROOT_URL to construct
API URLs instead of LMS_ROOT_URL.
all dirs must now go into COMPREHENSIVE_THEME_DIRS.
Move comprehensive theming setup section out of startup.py and into
settings files using new 'derived' functionality.
Add 'derive_settings' at the end of all top-level Django settings files.
Move validation of comprehensive theming settings into new apps.py
theming file.
Split theming code into code safe to run before settings are initialized
-and- after settings are initialized.