1.) Making YouTube mock server serve YouTube API.
2.) Adding ability to block YouTube API from YouTube mock server.
3.) Adding acceptance tests that check YouTube mock server for availability of YouTube API, and for it's ability to block YouTube API.
Part of BLD-939.
XBlocks can and should use the "publish" method provided by the runtime to emit analytical events. In theory we could now start replacing calls to track_function with calls to publish, however, that migration is not handled by this change.
Fixes: AN-789
if course title use Chinese or other language got the 500 error when visit the course_about page ,and the log shows :UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
When running in devstack, you need to set the SERVICE_VARIANT so that
assets.py knows what environment file to use. Recall that in devstack
we have all our settings in ../lms.env.json, not just ../env.json. So
you need to run like this:
SERVICE_VARIANT=lms paver lms --settings=devstack
Previously you'd get this error:
Warning: could not find environment JSON file at 'lms.env.json'
Note there is no path on the file, that's the bug. By making
self.REPO_ROOT absolute, we can walk up the tree and correctly find
the file, which is /edx/app/edxapp/lms.env.json fwiw.
The email texts in lms/templates/emails are not extracted by rake i18n:generate because the babel_mako.cfg does not include them.
And a several emails are not translatable because they do not use ugettext.
Ipython is not strictly required to run edx-platform. It can
be setup as part of Vagrant provision scripts, or manually
by each developer as required in specific cases.
STUD-1465
Changed the XBlock rendering logic to use promises to track asynchronous tasks.
Each dependency is then only loaded once the previous one has completed, and the
XBlock initialization only happens once all dependencies are loaded. This gives
XBlocks the same semantics in Studio as they get when shown directly on a page.
This commit allows us to test the server error template by visiting `/500`. This
way, we can catch errors in our error templates, instead of having infinitely
recursing errors.