Scheduled emails show "unsubscribe" link if waffle switch
`schedules.course_update_show_unsubscribe` is enabled, and
settings.ACE_ENABLED_POLICIES respects `bulk_email_optout`.
API endpoint allows GET/POST requests, which:
* GET asks for confirmation of opt-out
* POST accepts "unsubscribe" or "cancel", where "unsubscribe" creates the
Optout entry, and "cancel" does nothing.
Fixes flaky tests:
* The resolvers handle users in "bins", which are groups that depend on the user ID.
* The test user ID varies depending on the test order.
* This change ensures that the bin requested matches the user for the test.
The API documentation decorators do not have to leak which solution we
use to generate the docs. Here, and as discussed in PR #21820, we rename
the `openapi` module to `apidocs`, and we make sure that this module
includes all the right functions to document API Views without referring
to Open API.
https://github.com/edx/edx-platform/pull/20645
This introduces:
* A new XBlock runtime that can read and write XBlocks that are persisted using
Blockstore instead of Modulestore. The new runtime is currently isolated so
that it can be tested without risk to the current courseware/runtime.
* Content Libraries v2, which store XBlocks in Blockstore not modulestore
* An API Client for Blockstore
* "Learning Context" plugin API. A learning context is a more abstract concept
than a course; it's a collection of XBlocks that serves some learning purpose.
* Install drf-yasg
* Add drf-yasg settings and urls
* Pin drf to make drf-yasg work
* Adjust config-models version to be compatible
* Remove django-rest-swagger (the old way)
* Install drf-yasg
* Add drf-yasg settings and urls
* Pin drf to make drf-yasg work
* Adjust config-models version to be compatible
* Remove django-rest-swagger (the old way)
Some notes:
* The completion API was pulled out into a new repo, but left behind a
url() entry. That entry used a different namespace than the
pulled-out repo, so I had to fix the one place we used the namespace.
* Two urls couldn't be anchored because they broke tests:
url(r'users/(?P<user_id>\w+)/followed$', views.followed_threads, name='followed_threads'),
url(r'users/(?P<user_id>\w+)$', views.user_profile, name='user_profile'),
This commit adds OAuth2 support to the problem response report endpoints and moves them to a better location following EdX API standards while keeping compatibility to the old
endpoint locations.
This was done to enable the use of reports functionality by external agents and provide a better separation between backend and frontend.
The following endpoints have been moved:
* List instructor tasks:
New URL: POST /api/instructor/v1/course/{}/tasks
Old URL: POST /courses/{}/instructor/api/list_instructor_tasks
* Download instructor reports:
New URL: POST /api/instructor/v1/course/{}/reports
Old URL: POST /courses/course-v1:edX+DemoX+Demo_Course/instructor/api/list_report_downloads
* Generate problem response reports:
New URL: POST /api/instructor/v1/course/{}/reports/problem_responses
Old URL: POST /courses/course-v1:edX+DemoX+Demo_Course/instructor/api/get_problem_responses
Note: The behaviour of the URLs was not modified.
Scheduled emails show "unsubscribe" link if waffle switch `schedules.course_update_show_unsubscribe` is enabled, and
settings.ACE_ENABLED_POLICIES respects `bulk_email_optout`.
API endpoint allows GET/POST requests, which:
* GET asks for confirmation of opt-out
* POST accepts "unsubscribe" or "cancel", where "unsubscribe" creates the
Optout entry, and "cancel" does nothing.
Change behavior of existing v0.5 mobile api /api/mobile/v0.5/users/{username}/course_enrollments/ to exclude expired courses due to audit duration limits from the result set.
Add v1 version of mobile api /api/mobile/v1/users/{username}/course_enrollments/ that returns all enrollments and includes a field audiit_access_expires that contains expiration date (or null).
REV-495
These were very early experiments by the old performance team
on using CDNs for videos and logging performance data. No one
is looking at this data and it's just extra cruft on every page.