Commit Graph

14260 Commits

Author SHA1 Message Date
Justin Hynes
f509bceac2 fix: setup context for emitting event to segment if desired (#36692)
If we wish this event to be sent to Segment through the event-tracking lib, we must ensure that the context includes at least the `user_id` field in the context dict.
2025-05-09 10:54:37 -04:00
Eemaan Amir
841efcc9fb feat: update user segment attribute is_disabled when user is disabled/enabled (#36681) 2025-05-09 19:35:16 +05:00
Taimoor Ahmed
1bed70b73e feat!: remove cs_comments_service support for forums pin API
This will force the use of the new v2 forums API for pinning/unpinning.
2025-05-07 10:41:37 -04:00
Justin Hynes
46c9b3a193 fix: add error handling for potential issues calculating course progress (#36660)
* fix: add error handling for potential issues calculating course progress

Realized there is potential in a few places for exceptions to be thrown. I'm adding some more error handling in the course progress task and function to handle potential issues.
2025-05-05 14:00:12 -04:00
Justin Hynes
919615635e feat: optionally emit course completion analytics when a learner enters the courseware (#36507)
This PR attempts to improve the ability to collect analytics about learner's progress
in their courses. Currently, the only place we regularly calculate course progress is
when a learner visits the "Progress" tab in the courseware.

Now, _optionally_, when a learner visits the home page of their course, we will enqueue
a Celery task that will calculate their progress and emit a tracking event.

This event is gated by use of the COURSE_HOME_SEND_COURSE_PROGRESS_ANALYTICS_FOR_STUDENT
waffle flag.
2025-04-29 13:46:09 -04:00
Muhammad Adeel Tajamul
47a920d5b9 feat: added a policy to prevent sending ace messages to disabled users (#36584) 2025-04-29 11:29:33 +05:00
Awais Qureshi
1b15ae0cd9 feat!: upgrading api to DRF. 2025-04-24 13:00:04 +05:00
Awais Qureshi
04aa93c213 feat!: upgrading api to DRF. 2025-04-24 11:29:34 +05:00
Edward Zarecor
49a69f5042 feat: allow return dates for not started courses for mobile, PR #36297
feat: allow return dates for not started courses for mobile
2025-04-22 13:28:38 -04:00
Muhammad Adeel Tajamul
6972a6a562 feat: prevent sending bulk email to disabled users (#36549) 2025-04-22 12:44:04 +05:00
Kyrylo Kholodenko
b2c57adf12 feat: allow return dates for not started courses for mobile 2025-04-18 14:08:35 +03:00
sarina
ec4fd59d49 docs: Update link to sql schema doc 2025-04-15 09:27:08 -04:00
Awais Qureshi
6680aecbbe Rescore problem to drf (#35627)
* feat!: upgrading api to DRF.
2025-04-15 15:24:05 +05:00
Muhammad Umar Khan
b9556211be chore: fix cache content size calculation error (#36511)
Co-authored-by: M Umar Khan <umar.khan@A006-01609.local>
2025-04-10 15:22:28 +05:00
Feanil Patel
488891c5ca Merge pull request #36436 from openedx/feanil/remove_courseware_sock
feat!: Remove the course sock and related APIs.
2025-04-09 10:14:09 -04:00
Muhammad Adeel Tajamul
27d03cb906 feat: prevent sending goal reminder email to disabled users (#36505) 2025-04-09 16:29:44 +05:00
Feanil Patel
1829eb7d71 feat!: Remove the course sock and related APIs.
DEPR: https://github.com/openedx/edx-platform/issues/36429

This change removes the course_sock and related API data.  The UI it
removes is on the Legacy Courseware pages which have also been replaced
and have their own [deprecation ticket](https://github.com/openedx/edx-platform/issues/35803)

Before this can be merged, we will need to update the
frontend-app-learning MFE to no longer consume the
`can_show_upgrade_sock` attribute.

BREAKING CHANGE: CourseHomeMetadata, ProgressTab, OutlineTab and
VerifiedMode APIs will no longer have a `can_show_upgrade_sock`
attribute.
2025-04-07 10:29:39 -04:00
Taimoor Ahmed
0595e5a57d fix: legacy forum issues (#36470)
Co-authored-by: Taimoor  Ahmed <taimoor.ahmed@A006-01434.local>
2025-04-07 19:04:14 +05:00
Feanil Patel
cdf26039e6 test: Remove reference to the courseware url.
The courseware URL is going away but it's just used here to test the
middleware.  That can be test with other urls that are relevant to this
middleware.

Note, I was unable to re-produce the failures so I've put back using the
standard `reverse` logic for fetching the URL in the test.
2025-04-04 14:01:19 -04:00
Feanil Patel
d423775012 test: Replace calls to reverse('courseware')
We want to remove this page and URL endpoint so we're removing all the
references in the code that might point to this page.  It was replaced
by the sequences page in the Learning MFE years ago but the old pages
were never cleaned up. We are replacing the calls with the URL for the
courseware in the learning MFE.

See https://github.com/openedx/edx-platform/issues/35803 for more
details.
2025-04-04 14:01:19 -04:00
Justin Hynes
52f2231f20 fix: make the issued date displayed on previewed certificates match real certificates (#36471)
* fix: make the issued date displayed on previewed certificates match real certificates

This PR fixes an inconsistency in the dates displayed on certificates previewed via Studio with "real" certificates rendered to users.
2025-04-03 13:43:51 -04:00
Feanil Patel
e3c5495537 Merge branch 'master' into jciasenza 2025-04-03 09:14:56 -04:00
sarina
1e3074a3f9 docs: Update edx.rtd.io links to docs.openedx.org 2025-04-02 12:10:56 -04:00
Justin Hynes
61879b8caf fix: ensure we are selecting the correct date for self-paced courses (#36465)
It is possible for self-paced courses to be configured with a display behavior of "END" even though this configuration option should be invalid. The fix to this problem is beyond the scope of this PR. However, we can ensure we are selecting the correct display date for the certificate with a little bit of defensive coding.

I've added a check to ensure that we only use the end date of the course when the course is instructor-paced and configured with a display behavior of "END".
2025-04-02 11:19:59 -04:00
jciasenza
bae47af758 fix: updated existing enzyme tests to use react testing library 2025-03-28 17:45:48 -03:00
Muhammad Umar Khan
c6f75dfd2e chore: use pickle to compute collected_blocksture size before cacheing (#36455)
Co-authored-by: M Umar Khan <umar.khan@A006-01609.local>
2025-03-27 21:01:25 +05:00
Justin Hynes
f99b89c8c5 feat: update date selection logic when rendering course certs (#36447)
Fixes: https://github.com/openedx/platform-roadmap/issues/423

This PR updates the logic for determining the issued date shown on course certificates. For courses with a display behavior set to 'end date of the course', certificates earned by learners will now show the course run’s end date as the issued date.
2025-03-27 08:41:38 -04:00
Muhammad Umar Khan
9f5500a7f4 chore: use zpickle to compute collected_blocksture size before cacheing (#36452)
Co-authored-by: M Umar Khan <umar.khan@A006-01609.local>
2025-03-27 13:30:03 +05:00
Muhammad Faraz Maqsood
591008280f chore: rename braze_client to email_client 2025-03-26 11:21:56 +05:00
Muhammad Faraz Maqsood
2b83fe3bf4 Revert "chore: rename braze_client to email_client"
This reverts commit b3f9903a4b.
2025-03-25 17:38:32 +05:00
Muhammad Faraz Maqsood
b3f9903a4b chore: rename braze_client to email_client 2025-03-25 10:31:32 +05:00
Deborah Kaplan
3136134be8 chore: move the program dashboard APIs (#36420)
Moves the Program Dashboard APIs out of the deprecated remnants of the legacy learner dashboard, into the Programs djangoapp.

Keeps the old legacy routes for this API, left over from the deprecated remnants of the legacy learner dashboard, alongside future-proofed routes which will work when the deprecated, legacy Program Dashboard is eventually replaced with functionality in the Learner Dashboard MFE.

FIXES: APER-3949
2025-03-24 12:06:52 -04:00
Muhammad Umar Khan
43493c79ca chore: add monitoring on collected_blockstructure_size (#36435)
Co-authored-by: M Umar Khan <umar.khan@A006-01609.local>
2025-03-24 17:01:04 +05:00
Ali Salman
65cf7a9288 fix: legacy discussion issues (#36433)
Explicitly passed course_id to all views
2025-03-24 14:26:22 +05:00
Robert Raposa
399be67fc4 style: remove eslint with frontend code removal ADR
- Add ADR for frontend code removal
- Drop eslint, as explained in the ADR
2025-03-20 11:03:41 -04:00
Muhammad Noyan Aziz
ca463f918d SONIC-917: Added pluggable_override on `get_program_price_info` util (#36382)
* feat: add override for one click purchase eligibility

* refactor: remove extra line

* chore: move service worker inside util

* refactor: pylint issue

* fix: pylint errors

* fix: pycodestyle

---------

Co-authored-by: Muhammad Noyan  Aziz <noyan.aziz@A006-01474.local>
2025-03-20 15:37:17 +05:00
Taimoor Ahmed
0d4281aa2e fix: discussion xblock not compatible with forum v2 (#36315)
fix all endpoints that were currently breaking with the discussion xblock.

Co-authored-by: Taimoor  Ahmed <taimoor.ahmed@A006-01434.local>
2025-03-20 12:17:39 +05:00
Hina Khadim
ee7fd497a7 fix: add target='_blank' for videos hosted outside edx (#36361) 2025-03-17 11:10:49 +05:00
Awais Qureshi
62e5904286 feat!: upgrade generate_bulk_certificate_exceptions to drf ( 26 ) (#35577)
* feat!: upgrading api to DRF.
2025-03-14 15:48:06 +05:00
Bryann Valderrama
f90e59e52a docs: add event_type inline code annotation for open edX events (#36355) 2025-03-14 09:55:50 +01:00
Rodrigo Martin
91acd3a26f feat: Update link styling (#36348) 2025-03-11 12:07:29 -03:00
Emad Rad
40a4a718c0 chore: fixed typo 2025-03-06 10:46:43 -05:00
Feanil Patel
f310c02aba build: Drop the whatwg-fetch polyfill.
This package polyfills the Fetch api but that API is now widely
available so I don't think we need this package anymore.
2025-03-05 08:58:35 -05:00
jawad khan
a84ad87f4b fix: Adjusted discussion notification context for mobile (#36304)
* fix: Adjusted discussion notification context for mobile
2025-03-03 10:44:47 +05:00
jawad khan
05890d25b6 feat: Add hide_after_due field in blocks api (#36284) 2025-02-28 12:36:04 +05:00
Ahtisham Shahid
b1efc9b609 fix: resolved allow enroll email issue (#36309) 2025-02-27 15:34:05 +05:00
Ahtisham Shahid
6d21b97a8b fix: user id in allow enroll email inconsistent (#36300) 2025-02-26 18:12:57 +05:00
Awais Qureshi
3ef635b584 feat!: upgrading add_users_to_cohorts api to DRF ( 33 ) (#35613)
* feat!: upgrading api to DRF.
2025-02-26 17:49:46 +05:00
Deborah Kaplan
ecf5aee297 feat: management command to purge information about web certificates (#36287)
for Open edX  operators who still have users with legacy PDF certificates, retirement requires first extracting information from the user's GeneratedCertificate record in order to delete the 4 associated files for each PDF certificate, and then removing the links to the relevant files.  this creates a management command to do that work.

After thinking about it, I have removed the update to `status` from this management command, as per the original specification of the ticket. I added it for completeness originally, but was already uncomfortable, because it's not exactly accurate. The `CertificateStatuses` enum does define a `deleted` status:

```
    deleted             - The PDF certificate has been deleted.
```

but I think it's inappropriate to use here.

#### Why not use `CertificateStatuses.deleted` in the first place

There are multiple places in the code where it's clear that almost all of the statuses are legacy and unused (eg. [Example 1](6c6fd84e53/lms/djangoapps/certificates/data.py (L12-L34)), [Example 2](1029de5537/common/djangoapps/student/helpers.py (L491-L492))). There are innumerable APIs in the system that have expectations about what might possibly be returned from a `GeneratedCertificate.status` object, and none of them is expecting `deleted`

#### Why not revoke the certificate

Ultimately, the certificate isn't revoked, which has a specific meaning around saying it was unearned. The certificate was earned; it has simply been deleted.  We should not be kicking off program certificate invalidation, because that's not what's happening. We should be trusting the normal user retirement process to remove/purge PII from any program certificates that might exist. The nature of web certificates simply means that we are going through this process outside of the normal retirement flow. The normal retirement flow can be trusted to implement any certificate object revocation/removal/PII-purging, and doing an extra step outside of that flow is counterproductive.

#### Why not robustly add a flow for `CertificateStatuses.deleted`

When PDF certificates were removed from the system, they weren't removed in their entirety. Instead, we have this vestigial remains of PDF certificates code, just enough to allow learners to display and use the ones that they already have, without any of the support systems for modifying them. Adding a `deleted` status, verifying that all other APIs wouldn't break in the presence of a certificate with that status, adding the signals to process and propagate the change: all of this would be adding more tech debt upon the already existing technical debt which is the PDF certs code. Better to simply add this one necessary data integrity change, and focus on a process which might allow us to eventually remove the web certificates code.

#### Why it is good enough to ignore the status

The original ask was simply to enforce data integrity: to remove links to files that have been deleted, as an indication that they've been deleted. I only added `status` update out of a (misplaced but well-intentioned) completionist urge.

FIXES: APER-3889
2025-02-21 14:43:04 -05:00
Ahtisham Shahid
b7a2ffaab8 fix: log only for allowed_enroll email (#36273) 2025-02-19 17:35:43 +05:00