Updating to the current highest number instead of making it the default
which is highest know by the language. This is beacuse when we update
between python versions if there is a new proctocol version, we don't
want that to cause cache thrashing as we try to load things from the
various caches. We can get into a situation where new machines pickle
things with a newer versions of the procotocl, put them in the cache and
then break older machines that don't know about the new protocol
version.
* Added new auth class
- Created new class called OAuth2AuthenticationAllowInactiveUser, which replaces old class with same name
- Renames previous OAuth2AuthenticationAllowInactiveUser to OAuth2AuthenticationAllowInactiveUserDeprecated
- Replaced all imports of OAuth2AuthenticationAllowInactiveUser to call deprecated class instead
- testing new class in discussion(added flag based on django setting)
Fixed the most frequently occurring deprecation warnings, which were causing over half of the 34,140 deprecation warnings raised during the unit tests:
* `Use of .. or absolute path in a resource path is not allowed and will raise exceptions in a future release` - most of these were due to a single mis-configured resource path with a leading slash.
* `count is deprecated. Use Collection.count_documents instead.` - I added a handful of simple workarounds for this pymongo deprecation that shouldn't increase the query counts
Also did some cleanup of unused code in pavelib after the recent split of the new `i18n_compilejs` command from `i18n_dummy`. (This had caused a diff-quality failure on the first commit.)
If an error occurs while rendering an xmodule, the LMS chokes with the
following error if accessed by a non admin user.
In the admin user case the existing line that registers ErrorDescriptor
ensures that everything works. But for the non admin case we need this
additional directive.
Traceback (most recent call last):
File "/openedx/edx-platform/lms/djangoapps/courseware/views/index.py", line 153, in get
return self.render(request)
File "/openedx/edx-platform/lms/djangoapps/courseware/views/index.py", line 217, in render
return render_to_response('courseware/courseware.html', self._create_courseware_context(request))
File "/openedx/edx-platform/lms/djangoapps/courseware/views/index.py", line 468, in _create_courseware_context
courseware_context['fragment'] = self.section.render(self.view, section_context)
File "/usr/local/lib/python2.7/site-packages/xblock/core.py", line 202, in render
return self.runtime.render(self, view, context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1914, in render
return self.__getattr__('render')(block, view_name, context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1335, in render
return super(MetricsMixin, self).render(block, view_name, context=context)
File "/usr/local/lib/python2.7/site-packages/xblock/runtime.py", line 831, in render
frag = view_fn(context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/seq_module.py", line 262, in student_view
return self._student_or_public_view(context, prereq_met, prereq_meta_info, banner_text)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/seq_module.py", line 343, in _student_or_public_view
items = self._render_student_view_for_items(context, display_items, fragment, view) if prereq_met else []
File "/openedx/edx-platform/common/lib/xmodule/xmodule/seq_module.py", line 485, in _render_student_view_for_items
rendered_item = item.render(view, context)
File "/usr/local/lib/python2.7/site-packages/xblock/core.py", line 202, in render
return self.runtime.render(self, view, context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1914, in render
return self.__getattr__('render')(block, view_name, context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1335, in render
return super(MetricsMixin, self).render(block, view_name, context=context)
File "/usr/local/lib/python2.7/site-packages/xblock/runtime.py", line 831, in render
frag = view_fn(context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/vertical_block.py", line 118, in student_view
return self._student_or_public_view(context, STUDENT_VIEW)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/vertical_block.py", line 85, in _student_or_public_view
rendered_child = child.render(view, child_block_context)
File "/usr/local/lib/python2.7/site-packages/xblock/core.py", line 202, in render
return self.runtime.render(self, view, context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1914, in render
return self.__getattr__('render')(block, view_name, context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1335, in render
return super(MetricsMixin, self).render(block, view_name, context=context)
File "/usr/local/lib/python2.7/site-packages/xblock/runtime.py", line 831, in render
frag = view_fn(context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/library_content_module.py", line 314, in student_view
rendered_child = displayable.render(STUDENT_VIEW, child_context)
File "/usr/local/lib/python2.7/site-packages/xblock/core.py", line 202, in render
return self.runtime.render(self, view, context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1914, in render
return self.__getattr__('render')(block, view_name, context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1335, in render
return super(MetricsMixin, self).render(block, view_name, context=context)
File "/usr/local/lib/python2.7/site-packages/xblock/runtime.py", line 835, in render
updated_frag = self.wrap_xblock(block, view_name, frag, context)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/x_module.py", line 1287, in wrap_xblock
frag = wrapper(block, view, frag, context)
File "/openedx/edx-platform/openedx/core/lib/xblock_utils/__init__.py", line 155, in wrap_xblock
add_webpack_to_fragment(frag, class_name)
File "/openedx/edx-platform/common/lib/xmodule/xmodule/util/xmodule_django.py", line 28, in add_webpack_to_fragment
for chunk in webpack_loader.utils.get_files(bundle_name, extension, config):
File "/usr/local/lib/python2.7/site-packages/webpack_loader/utils.py", line 31, in get_files
return list(_get_bundle(bundle_name, extension, config))
File "/usr/local/lib/python2.7/site-packages/webpack_loader/utils.py", line 23, in _get_bundle
bundle = get_loader(config).get_bundle(bundle_name)
File "/usr/local/lib/python2.7/site-packages/webpack_loader/loader.py", line 83, in get_bundle
raise WebpackBundleLookupError('Cannot resolve bundle {0}.'.format(bundle_name))
WebpackBundleLookupError: Cannot resolve bundle NonStaffErrorModule.
This PR adds a management command that will update the email address
of the given accounts provided through a CSV file.
This is necessary internally at edX to update a number of internal accounts
which are using sibling email addresses and would be locked out after we
enforce SSO.
Currently, we are working on removing the rest_framework_auth library from edx-platform. For this push, we need to remove the oauth2Authentication class. This PR creates a new class oauth2AuthenticationDeprecated that adds additional new relic metrics. The metrics would allow us to see how often this class is used and its success rate. The hope is that this information will help us with transitioning to a different authentication class.
Learner who have already earned PDF honor certificates in old courses
are unable to see the certificate links on dashboard and course progress
pages since `course.cert_html_view_enabled` is deprecated and default to
True for all courses.
PROD-60
[TNL-7051] Clicking a video XBlock's fullscreen button now takes the video fullscreen instead of full window.
Gracefully fallback to full window if fullscreen apis are absent
The Video Player XBlock will sometimes make API calls to /couses/yt_video_metadata, a REST API endpoint that in turn loads video metadata from YouTube using the configured settings.YOUTUBE_API_KEY.
However, in the Blockstore-based XBlock runtime, we are running XBlocks in a secure sandbox, and the user's browser cannot pass session cookies when calling REST API endpoints. So currently, the video XBlock tries to request YouTube metadata from that API endpoint, but it fails if run within such a sandbox.
The existing API also doesn't work for anonymous users (users who are allowed to see video XBlocks but who have not logged in to an LMS user account).
This commit updates the Video XBlock so that it can use a handler to load the data from YouTube instead of a generic REST API. This works well in the new runtime, because it has code to support calling handlers within the sandbox, including by anonymous users.
I also fixed a bug where on a default devstack, the endpoint will try calling YouTube using PUT_YOUR_API_KEY_HERE as an API key, and get a "bad request" error from YouTube.
The code could be re-organized by moving things around, but I've left everything as-is for now to keep the diff as small as possible.
This is step 3 of DE-1824.
Also update:
* six 1.13.0 => 1.14.0
* edx-django-utils 2.0.2 => 2.0.3
* skip test that checks all model changes have migrations. (We defer
this to step 4.)