* docs: ADR for exposing existing studio views through new JWT-enabled endpoints
To allow MFEs to drive existing studio functionality, we need to expose that
functionality via REST APIs that can be used by MFEs. This ADR describes an
approach to do that.
* Update cms/djangoapps/contentstore/docs/decisions/0002-restful-studio-apis-for-MFE.rst
Co-authored-by: Farhaan Bukhsh <farhaan@opencraft.com>
* Update cms/djangoapps/contentstore/docs/decisions/0002-restful-studio-apis-for-MFE.rst
Co-authored-by: Kyle McCormick <kdmc@pm.me>
Co-authored-by: Farhaan Bukhsh <farhaan@opencraft.com>
Co-authored-by: Kyle McCormick <kdmc@pm.me>
This follows on the commit that gutted the email_marketing djangoapp
by actually dropping the model from code and database.
The djangoapp could now be removed after Maple releases.
AA-607
Upgrade edx-django-utils to bring in the new
code_owner_squad custom attribute for
monitoring purposes. See the edx-django-utils
changelog for details.
ARCHBOM-1551
This djangoapp was designed for talking to sailthru, in a fairly
edx.org-specific way. Nowadays, edx.org doesn't need this code and
if other installations do, it's better off as a more distinct
plugin anyway, rather than direct support in the platform.
I've moved the one signal that was still useful (calling
segment.identify() whenever user fields change) into user_authn.
And I've left the EmailMarketingConfiguration model alone for now,
but will remove that shortly. Nothing uses it as of this commit.
AA-607
DEPR-139
The course name can contain apostrophes and other special characters. The email template right now escapes every words. This is not desired because it can render apostrophes like #39;. Update the email templates so only second half of the email template is escaped
If a certificate available date was set on a self paced course, it would
show text to the learner saying that the grades would be available in
the future when that was inaccurate.
* fix: pin python-slugify<5.0.0
transifex-client requires python-slugify<5.0.0 for Python 2.0 support which conflicts with the latest python-slugify version.
* Commits:
docs: Remove completed TODO discussions item
feat: Add support to Discussions API for legacy cohort settings
refactor: Remove get_course_discussion_settings helper
refactor: Remove set_course_discussion_settings helper
refactor: Add better DRF support to legacy discussions settings
Facebook requires a callback when using the `.ui()` method now. I don't
know when this changed, but the share button is currently broken on
course certificates.
Facebook documentation of the `.ui()` method:
https://developers.facebook.com/docs/javascript/reference/FB.ui/
In dfb80acc1, we allowed group_access settings to bubble up from
Units to Sequences in the case where all Units had the same group
settings for a particular user partition. This caused an issue
where the group being bubbled up could be empty if the Unit was
misconfigured in OLX (this is already caught if done directly on
the Sequence). This commit fixes things so that empty partition
group settings never bubble up.
We don't want empty partition groups to bubble up because it would
mean that no groups are allowed to access the Sequence, which is
probably an error. (There is a separate visible_to_staff_only flag
when you want to hide content from all non-staff users.)
We can get the same information much more cheaply and predictably
by using CourseOverviews. This was contributing to slow traces for
the edx_proctoring.views:StudentOnboardingStatusView.get
transaction.
NOTE: This will require a forced backfill of course outlines to update
the course content data in learning_sequences:
python manage.py cms backfill_course_outlines --force
Without this backfill, the learning_sequences API will continue to serve
stale content data that has no user partition group data. It won't cause
errors, but it won't do the exclusions properly.
Commit summary:
* Created EnrollmentTrackPartitionGroupsOutlineProcessor to process the
enrollment_track User Partition Group, allowing Sequences and Sections
to be removed based on their group_access settings.
* Added user_partition_groups attribute to CourseLearningSequenceData
and CourseSectionData in learning_sequences/data.py, along with
backing model data.
* get_outline_from_modulestore now extracts group_access settings from
Sections and Sequences. It also bubbles up group_access settings from
Units, meaning that if a Sequence with no group_access setting has
Units that are all set to show only to the Verified enrollment track,
then the Sequence will only show to the Verified enrollment track.
This commit adds model-level support for all user partition groups by
capturing all the content group associations (group_access), but it only
implements the code checks for the enrollment track partition. It's not
clear that we want to generalize, since there's only one other partition
type (A/B testing) that is applicable at the outline level.
It's important to note that there is no way to set the group_access for
a Section or Sequence in Studio today. It's only possible by direct
editing of the OLX for import. That being said, the block structures
framework supports applying course groups at this level, and this commit
moves learning_sequences closer to feature parity.
The bubbling up from Units to the parent Sequence was done to mitigate
confusion when a Sequence is entirely composed of Units that are not
visible to the user because of content group restrictions. It's not
clear whether this is something we want to do in the long term, since it
would simplify the code to always specify group_access at the Sequence
level. This first pass is done partially to collect better data about
places in our courses where this kind of usage is already happening.
Most of the EnrollmentTrackPartitionGroupsOutlineProcessor code and its
tests were written by @schenedx.