This commit addresses to the need to add an API for Sidebar Navigation
that returns the course structure with sections, subsections, and
**units**, according to user access rules. (Previous outline requests
only went down to subsections.)
To improve the performance of the API, we cache the course structure
for a user, which makes it much easier to calculate the block structure
for the user at each request. However, there may be cases when this
caching can lead to an overflow of the cache storage in high-loaded LMS
with large courses, so the corresponding flag
"courseware.disable_navigation_sidebar_blocks_caching" was added so
that this caching can be disabled.
* Add unsubscribe_token uuid field to CourseGoal model
* Add endpoint to unsubcribe from just a token (no login needed)
* Add admin page for the course_goals djangoapp
* Add get_course_overview_or_404 utility method
* Clean up URL handling in course_home_api
AA-907
Created an API to be called by the Outline Tab
in the Course Home MFE. This API currently only
returns Course Tool data. Preemptively using the
`course_home_api/outline/v1/...` naming scheme to
make way for more Outline Tab data within this API.
This endpoint is intended to contain generic information for
every page in the Course Home MFE. It contains course information
for the header (Course title, org, number, key) as well as staff
status for the user and the Course tabs to display.