Commit Graph

66 Commits

Author SHA1 Message Date
Kyle McCormick
9bf266f717 fix: add missing __init__.py files 2021-10-21 09:54:22 -04:00
Michael Terry
2176dd7890 feat: allow unsubcribing from a course goal with just a token
* 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
2021-08-23 12:07:32 -04:00
Robert Raposa
036a1a835c Revert "MB-1192: [feat] Add course ended, not passing certificate status to dashboard messaging (#28405)" (#28426)
This reverts commit 35d9330c19.
2021-08-09 12:38:14 -04:00
Thomas Tracy
35d9330c19 MB-1192: [feat] Add course ended, not passing certificate status to dashboard messaging (#28405)
* [feat] Add course over, not passing status to dash

If a student has not passed a course, the course has ended, and they
have a verified seat, we want to show them a message at a glance on the
dashboard.
2021-08-09 10:03:49 -04:00
Matthew Piatetsky
8183a5ae64 address comments 2021-08-05 21:45:58 -04:00
Matthew Piatetsky
986261a8d0 feat: update course goals with new fields and a waffle flag to toggle the new behavior 2021-08-02 12:52:47 -04:00
David Ormsbee
dae459bfb4 feat: Rollout override for Learning Sequences API (#28205)
We control rollout of the Learning Sequences REST API with the
USE_FOR_OUTLINES (learning_sequences.use_for_outlines) course waffle
flag. But sometimes we're going to want to be able to take a look at
production data output of this API before explicitly turning the API on
(and switching over to it) for the Courseware MFE. To do this, we're
going to make the availability base itself purely on the waffle flag and
course type (Old Mongo courses are not supported), and allow people to
"peek" at what the API would have given if it was rolled out by passing
an explicit "force_on=1" querystring param.

This is work to support the rollout of TNL-8330.
2021-07-28 11:53:17 -04:00
Thomas Tracy
abccf1ee26 [feat] Add enrollment mode to outline API (#28234) 2021-07-22 13:33:14 -04:00
Thomas Tracy
3ecd233c11 [feat] MB-1192: Add user_has_passing_grade to outline API (#28198)
* [feat] add user_has_passing_grade to outline API

* default to false

* add tests

* linting
2021-07-16 15:03:35 -04:00
Thomas Tracy
986f52faab [feat] Add has_scheduled_content to outline API
The outline API that the learning MFE needs to know if a course has
upcomming content for a new alert.
2021-07-06 11:33:53 -04:00
Michael Terry
c62626227a fix: jump_to should redirect to first unit on invalid key
Previously, it would 404. While accurate, it's not a great user
experience. Users can be offered invalid jump_to paths in the normal
course of things, if course content disappears or they lose access
to it.

In both cases, they might be offered a resume URL in the courseware
that would be to a now-invalid location.

With this change, that invalid link will at least give them
*something* (the first unit in the course) rather than an error
page.

This also (unrelatedly) fixes an exception when the learning MFE
outline page tries to render a course that contains sequences
with no children.

AA-867
2021-06-28 15:43:12 -04:00
Michael Terry
c8a62bd4d2 feat: add learner_has_access field to progress tab data
In order to allow the learning MFE's progress tab to show a
different UX for FBE exceptions (where some exams can still be
completed by audit learners), this commit adds access information
to each exam.

AA-829
2021-06-22 09:10:12 -04:00
sofiayoon
3616910841 Merge pull request #27899 from edx/syoon/AA-797
feat: AA-797 switch course home flag to opt out
2021-06-21 09:37:48 -04:00
David Ormsbee
fe6448303d fix: Use learning_sequences to remove bad sequences from outline.
A common usage pattern is to make an exam that is restricted to a
particular enrollment track. Since there is no UI in Studio to do this
at the sequence/subsection level, course authors instead restrict every
unit in the sequence to that track (e.g. "verified"). The legacy
courseware experience could handle this, but the Course Blocks API does
not. It is likely that we'll want to permit toggling this at the
sequence level, but regardless of whether we do that going forward, we
still have to deal with this kind of content data in existing courses.

An entirely empty sequence is useless, and currently breaks the
Courseware MFE browsing experience. This commit introduces the first
part of that fix, invoking the new Learning Sequences API to remove
sequences that the user shouldn't be allowed to know about. The plan is
to switch over the entire course outline from the Course Blocks API to
the Learning Sequences API, and this is the first small step in that
direction.

This also creates CourseWaffleFlag learning_sequences.use_for_outlines
to control the gradual rollout of this feature. This will start as a
very limited rollout to address courses that show this specific bug
(TNL-8377).

New learning_sequences public API call: public_api_available
2021-06-17 11:13:47 -04:00
Sofia Yoon
e645d11bba feat: AA-797 switch course home flag to opt out by replacing it with a course home use legacy frontend flag 2021-06-16 10:04:49 -04:00
Sofia Yoon
87e3ce69b6 refactor: AA-796 remove outline and dates tabs flags 2021-06-08 15:44:19 -04:00
Albert (AJ) St. Aubin
eb346f1ab2 feature: Updated the text when a learner earns a cert on the Dashboard
[MICROBA-678]

This patch will update the text on the course dashboard when a learner
successfully earns a certificate and that certificate is available. It
also adds to the Outline API for the Outline in the Learning MFE so that
the same changes can be made there.
2021-06-08 14:07:06 -04:00
Carla Duarte
cecd37c45b feat: surface subsection block keys in progress api 2021-06-01 09:57:54 -04:00
Carla Duarte
2f8572d540 fix: handle unenrolled users in course home APIs (AA-790) 2021-05-13 14:08:44 -04:00
Michael Terry
12e9763446 Merge pull request #27487 from edx/mikix/fix-gated-content-check
fix: properly set contains_gated_content field on xblocks again
2021-05-03 11:50:40 -04:00
Michael Terry
6e52aafc8c fix: properly set contains_gated_content field on xblocks again
This has been broken for a couple months, preventing proper display
of verified-only assignments on the dates tab and elsewhere.

AA-780
2021-05-03 10:17:17 -04:00
Usama Sadiq
60f49d4048 refactor: pyupgrade second iteration (#27442) 2021-05-03 17:13:15 +05:00
Kyle McCormick
a69567b18b feat: default staff to courseware MFE if active (via jump_to)
The /jump_to/ LMS endpoint is used in a number of places
to direct users to courseware. It currently only redirects to
Legacy courseware URLs, which then conditionally may
redirect to the Learning MFE.

Two issues with this:
1. Performance Impact: In most cases, going to Legacy first
   is just an extra redirect.
2. Confusion for Privileged Users: Neither course nor global
   staff are auto-redirected from the Legacy experience to the
   MFE. Thus, these priviliged users confusingly never see the
   MFE by default; they must always manually click into it.

This commit makes it so that /jump_to/ directs
users to whatever the default courseware experience is
for them. For staff of courses active in the new experience,
this will impact (at a minimum) the "View Live"
links in Studio, all links on the old and new LMS
course outline, and the "Resume" links on the course
dashboard. Learners should see no difference other than
a performance improvement when following courseware links
from the LMS.

This also adds an optional 'experience=[legacy|new]'
query param to /jump_to/, allowing us to specifically
generate Legacy courseware URLs for the
"View in Legacy Experience" tool.

TNL-7796
2021-04-07 10:24:58 -04:00
Ben Holt
ec3c31eb05 feat: added another 'Date' expose-headers for outline api clients (#27221)
Exposed the Date header on the outline api so clients can accurately compute times relative to the dates returned by the API; this was previously done with the course API (#26979)

Browser time is notoriously unreliable for this, especially for a Learner-facing countdown call-to-action based on the access expiration date. (REV-2126)

Using the Date header for this allows the client to make use of information that is already sent, does not require additional calls nor modifying the API, and could be generalized to more or all our APIs without modifying them.
2021-04-02 10:37:19 -04:00
Matthew Piatetsky
cbb84fef74 fix: ensure that course staff can see course outline content when masquerading as a learner
AA-727
2021-04-01 10:55:22 -04:00
Kyle McCormick
558d2eb52c refactor: centralize learning MFE URL-building logic (#26689)
In preparation for switching LMS/Studio over
from serving legacy courseware URLs in certain
places (for example, resume_course_url) to serving
learning micro-frontend URLs.

TNL-7796
2021-02-24 08:50:15 -05:00
usamasadiq
3d1f3cea64 Ran pyupgrade on lms/djangoapps/course_blocks
Ran pyupgrade on lms/djangoapps/course_goals
Ran pyugprade on lms/djangoapps/course_home_api
2021-02-19 16:29:52 +05:00
Aarif
d2a147bb47 replaced unittest assertions pytest assertions (#26542) 2021-02-18 19:14:41 +05:00
Michael Terry
139a0f6ee1 Merge pull request #26290 from edx/mikix/effort-estimation
AA-614: Add initial effort estimation block transformer
2021-02-18 08:52:55 -05:00
Michael Terry
1b9119859e AA-614: Add initial effort estimation block transformer 2021-02-18 08:31:19 -05:00
Carla Duarte
dcb6bbc262 AA-664: add JwtAuthentication to course home api 2021-02-16 12:21:16 -05:00
Carla Duarte
8d2d78dc61 AA-650: block deprecated keys from course home MFE 2021-02-08 13:00:36 -05:00
Carla Duarte
d97b058c5d AA-568: fix start course bug 2021-01-27 15:29:21 -05:00
Carla Duarte
99163bdf2c AA-131: Allow anonymous users through course home MFE 2020-12-16 12:58:33 -05:00
Michael Terry
cf2e778b56 TNL-7185: clean up unused html blobs from the API
Now that the MFE consumes our data structure for a couple of the
alerts, we no longer need to send raw html at all for them.
2020-12-14 14:26:10 -05:00
Michael Terry
eef72b5ab7 TNL-7185: Send data, not rendered HTML to the learning MFE
Specifically, send data versions of course_expired_message and
offer_html.

The rendered HTML is still being sent for now, until the learning
MFE is updated to consume the data objects.
2020-12-14 13:41:03 -05:00
Michael Terry
ae561256cb AA-383: add verified mode info to course_home outline API
Adds can_show_course_sock and verified_mode values to the outline
API serialization. And adds a utility method to generate the
verified_mode dictionary, shared with the courseware API.
2020-12-04 14:26:38 -05:00
Michael Terry
40fbef4af2 AA-289: rewrite how course updates behave when dismissed
Previously, dismissing one course update would disable all future
updates. But that feels a bit limiting.

Instead, these are the new rules:
- If the newest update has not been dismissed yet, it gets displayed.
- If the newest update has been dismissed, we display nothing.
- Editing the newest update will cause it to be displayed again.
- New updates get displayed, even if previous updates were dismissed.

This commit includes a light refactoring and addition of some utility
methods to help manage the above.

It also notes that the learning MFE does not use the "latest_update"
waffle option, which controls the labeling of the update message.
2020-11-12 09:39:15 -05:00
Kyle McCormick
151bd13666 Use full names for common.djangoapps imports; warn when using old style (#25477)
* Generate common/djangoapps import shims for LMS
* Generate common/djangoapps import shims for Studio
* Stop appending project root to sys.path
* Stop appending common/djangoapps to sys.path
* Import from common.djangoapps.course_action_state instead of course_action_state
* Import from common.djangoapps.course_modes instead of course_modes
* Import from common.djangoapps.database_fixups instead of database_fixups
* Import from common.djangoapps.edxmako instead of edxmako
* Import from common.djangoapps.entitlements instead of entitlements
* Import from common.djangoapps.pipline_mako instead of pipeline_mako
* Import from common.djangoapps.static_replace instead of static_replace
* Import from common.djangoapps.student instead of student
* Import from common.djangoapps.terrain instead of terrain
* Import from common.djangoapps.third_party_auth instead of third_party_auth
* Import from common.djangoapps.track instead of track
* Import from common.djangoapps.util instead of util
* Import from common.djangoapps.xblock_django instead of xblock_django
* Add empty common/djangoapps/__init__.py to fix pytest collection
* Fix pylint formatting violations
* Exclude import_shims/ directory tree from linting
2020-11-10 07:02:01 -05:00
Régis Behmo
2307dff4c9 Deprecate WaffleFlag.override method
This allows us to get rid of waffle_utils' custom WaffleFlag method.
2020-11-03 19:25:37 +01:00
Régis Behmo
16ce16e85e Deprecate ExperimentWaffleFlag.override method
This is part of a removal of the many override methods of toggle
flag/namespace classes. This allows us to remove imports of test modules
from production code.
2020-11-03 19:25:37 +01:00
Carla Duarte
8133ae5c44 AA-357: Add DatesBannerSerializerMixin to MFE Outline Tab API 2020-10-15 10:05:09 -04:00
Michael Terry
6f69fd7dc2 Merge pull request #25105 from edx/mikix/public-outline
AA-253: don't send outline if not enrolled
2020-09-28 11:46:22 -04:00
Michael Terry
100018081d AA-253: don't send outline if not enrolled
This is for the learning MFE outline endpoint.

Also clean up some related permissions issues.
2020-09-28 10:45:07 -04:00
Tim McCormack
f29e418264 Revert "Revert "ARCHBOM-1494: Refer to custom attributes, not metrics, especially with edx-django-utils (#25010)" (#25025)" (#25055)
This reverts commit 986a448d9e.
2020-09-28 13:53:57 +00:00
Ahtisham Shahid
986a448d9e Revert "ARCHBOM-1494: Refer to custom attributes, not metrics, especially with edx-django-utils (#25010)" (#25025)
This reverts commit ba9ee4e151.

Fixed Style lint issue
2020-09-21 13:48:00 +05:00
Tim McCormack
ba9ee4e151 ARCHBOM-1494: Refer to custom attributes, not metrics, especially with edx-django-utils (#25010)
This uses the new names introduced in edx-django-utils
3.8.0 (edx/edx-django-utils#59), which we're already using, as
well as updating a few other locations where we incorrectly refer
to New Relic custom metrics instead of custom attributes.

Includes a couple of unrelated lint fixes in a file I modified.
2020-09-18 13:33:50 +00:00
Carla Duarte
ba89c01e6e AA-368: Surface resume_block in Outline Tab API 2020-09-16 11:03:15 -04:00
Carla Duarte
559f7261c7 Merge pull request #24887 from edx/ciduarte/swagger-bug
Fix for Swagger error
2020-09-01 14:02:43 -04:00
Carla Duarte
11d52f154f Fix for Swagger error 2020-09-01 11:38:46 -04:00