Commit Graph

66498 Commits

Author SHA1 Message Date
Feanil Patel
c9e7d2ce51 Merge pull request #36322 from openedx/feanil/update_package_lock
build: Regenerate package-lock.json
2025-03-04 15:20:20 -05:00
Feanil Patel
2417ca0057 build: Regenerate package-lock.json
This file is very out of date so just buliding it from scratch to get
the latest versions of 2nd order dependencies that are still compatible
with our explicit dependencies.
2025-03-04 12:54:50 -05:00
Feanil Patel
af6b35a9d7 Merge pull request #35950 from openedx/renovate/uglify-js-2.x
fix(deps): update dependency uglify-js to v2.8.29
2025-03-04 12:42:59 -05:00
Feanil Patel
042be0a181 Merge pull request #36285 from openedx/renovate/migrate-config
chore(config): migrate renovate config
2025-03-04 12:40:22 -05:00
Feanil Patel
43c59db731 Merge pull request #36320 from openedx/repo-tools/upgrade-python-requirements-fd3a106
chore: Upgrade Python requirements
2025-03-04 12:10:14 -05:00
Feanil Patel
d99a481c3c fix: Downgrade social-auth-core to fix tests.
It looks like the testing failures seem related to social-auth-core so
just downgrading that package to see if it unblocks the rest of the
upgrades.
2025-03-04 11:16:10 -05:00
edX requirements bot
e21d4b40db chore: Upgrade Python requirements 2025-03-04 11:16:09 -05:00
Feanil Patel
acdaef62cb Merge pull request #36182 from openedx/repo-tools/upgrade-python-requirements-1fe67d3
chore: Upgrade Python requirements
2025-03-04 11:12:46 -05:00
edX requirements bot
d853350eb3 chore: Upgrade Python requirements 2025-03-04 10:48:32 -05:00
Robert Raposa
468e1e3135 Merge pull request #36302 from ormsbee/remove-custom-startup
fix: remove custom startup to fix dev reloading
2025-03-04 08:35:19 -05:00
Muhammad Farhan
988801f3c0 fix: handle AttributeError in exception clause (#36317) 2025-03-04 13:05:04 +05:00
Feanil Patel
fd3a106ac4 Merge pull request #36313 from openedx/feanil/geoip2-bot-update-country-database-05890d2
Update GeoLite Database
2025-03-03 15:52:26 -05:00
feanil
bd165a5b9b chore: geoip2: update maxmind geolite country database 2025-03-03 14:45:34 -05:00
github-actions[bot]
50acf2c4f6 feat: Upgrade Python dependency edx-enterprise (#36316)
Exposes Waffle-based feature flag for migrating to CatalogQuery-based Algolia filtering on frontends.

Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`

Co-authored-by: adamstankiewicz <2828721+adamstankiewicz@users.noreply.github.com>
2025-03-03 12:34:20 -05:00
Peter Kulko
cf7e45cf4d feat: manage tag events for new Unit page (#35751) 2025-03-03 10:59:05 -03:00
Saad Yousaf
790fdcf05a fix: fix accessibility issue with video editor speed option selected speed 2025-03-03 13:21:45 +05:00
Muhammad Adeel Tajamul
1d0c72a0e1 chore: updated openedx-forum to 0.1.8 (#36314) 2025-03-03 12:00:52 +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
Abdul Rehman
385ea8382e fix: Remove duplicate imports of js files in instructor dashboard pages (#36289)
Co-authored-by: Abdul Rehman <abdul.rehman02@A006-01628.local>
2025-03-03 09:48:22 +05:00
David Ormsbee
d5aa834b6c refactor: move get_user_model call out of method
The get_service_user method used to do a local call to the
get_user_model function because it was not guaranteed to be properly
initialized at the time of import. This was partly due to how we did
custom initialization using lms/startup.py, but it was also because
when it was implemented (commit f318661), the platform was still
running on Django 1.8.18. At that time, get_user_model was guaranteed to
work only after Django has imported all models.

In Django 1.11, the behavior of get_user_model was changed:

  https://docs.djangoproject.com/en/1.11/releases/1.11/#django-contrib-auth

> get_user_model() can now be called at import time,
> even in modules that define models.

Now that lms/startup.py is gone and get_user_model is safe to call at
the module level, I'm refactoring the catalog app's models.py file to
follow the convention we use everywhere else in edx-platform with
respect to get_user_model.
2025-02-28 23:16:05 -05:00
David Ormsbee
c4f21b6931 fix: remove custom startup to fix dev reloading
The cms/startup.py and lms/startup.py files were created to
allow us to do a lot of custom initialization around things
like the ModuleStore, monkey-patching, adding MIME types to
our process, etc. As far back as 2017, we recognized that
this was a bad thing, marked these modules as "deprecated",
and started removing things or putting them in the standard
Django locations for them (0279181).

In its current state, these startup modules no longer do any
custom work, and just invoke django.startup(). But this is
meant for running Django code in "standalone" usage, e.g. if
you have a script that isn't a management command but needs
some Django functionality.

The "runserver" command used during development normally
launches a child process to serve requests and knows how to
kill and respawn that process when files are modified, so
that changes are reflected. It can also normally handle the
case where there's a SyntaxError in the child process, and
fixing that error will reload the code again.

Something about running django.startup() manually interferes
with this functionality in "runserver". It still reloads the
code in response to changes, but if the code gets into a
broken state for any reason (like a syntax error), the master
process itself dies. That causes the container to restart,
only to die again shortly afterwards in a loop until the
error is fixed. The container restarts will break any shell
you had opened into the container, as well as any IDE
integrations that connected to that container to access the
files and Python instance.

Getting rid of the custom startup code fixes this and moves
us one small step closer to being a more normal Django
project.
2025-02-28 23:16:05 -05:00
jawad khan
05890d25b6 feat: Add hide_after_due field in blocks api (#36284) 2025-02-28 12:36:04 +05:00
Kyle McCormick
2dc4dfe281 docs: Settings Simplification ADR (#36224)
Part of: https://github.com/openedx/edx-platform/issues/36215

Follow up in: https://github.com/openedx/open-edx-proposals/issues/684
2025-02-27 09:27:28 -05:00
Ahtisham Shahid
b1efc9b609 fix: resolved allow enroll email issue (#36309) 2025-02-27 15:34:05 +05:00
Hassan Raza
35243385eb fix: track duplicate unsubscribe events in snowflake by adding preference updates (#36299)
Co-authored-by: Hassan Raza <h.raza@A006-01472.local>
2025-02-27 11:42:38 +05:00
Katrina Nguyen
9416fba6fa Merge pull request #36308 from openedx/katrinan029/upgrade-edx-enterprise-6d21b97
feat: Upgrade Python dependency edx-enterprise
2025-02-26 12:09:42 -08:00
katrinan029
ff4d7d5107 feat: Upgrade Python dependency edx-enterprise
version bummp

Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
2025-02-26 19:18:46 +00: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
Muhammad Farhan
0e0d1dab95 feat: Add test for detecting broken and locked links (#36286) 2025-02-26 12:09:23 +05:00
Rômulo Penido
9451cfca26 feat: add API to return list of downstream blocks for an upstream [FC-0076] (#36253)
Adds the API for listing downstream contexts and parents for a given publishable entity.
2025-02-25 13:55:02 -05:00
Muhammad Afaq Shuaib
b83c8495e1 chore: add TRANSCRIPT_LANG_CACHE_TIMEOUT setting variable in common setting envs (#36296)
* chore: add TRANSCRIPT_LANG_CACHE_TIMEOUT setting variable in common setting envs
* chore: bump edx-val version
2025-02-25 20:07:14 +05:00
Bryann Valderrama
a2bb8c9458 refactor!: remove ENABLE_HOME_PAGE_COURSE_API_V2 feature toggle (#36181) 2025-02-24 16:42:06 +01:00
Muhammad Faraz Maqsood
2798f28c2a fix: send correct status for scanning 2025-02-24 13:31:08 +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
Chris Chávez
b6489e718c feat: Video editor supports transcripts [FC-0076] (#36058)
* Add error handler on save video to avoid creating sjson
* Support transcripts without edx_video_id in definition_to_xml
* When copying a video from a library to a course: Create a new edx_video_id
* Save transcripts as static assets in a video in a library when adding a new transcript.
* Delete transcripts as static assets in a video in a library when deleting transcripts.
* Support download transcript in a video in a library.
* Support replace transcript in a video in a library.
* Support updating transcripts in video in a library.
* Refactor the code of downloading YouTube transcripts to enable this feature in libraries.
* Support copy from a library to a course and a course to a library.
2025-02-21 13:33:13 -05:00
Maria Grimaldi
6c6fd84e53 fix: import authoring filter from content_authoring instead (#36109)
Correctly name authoring subdomain according to DDD docs: https://openedx.atlassian.net/wiki/spaces/AC/pages/663224968/edX+DDD+Bounded+Contexts
2025-02-21 14:55:50 +01:00
Awais Qureshi
b5de356747 docs: fixing make docs command. (#36280)
* docs: fixing make docs command.
2025-02-21 13:00:44 +05:00
Peter Kulko
0319d62a78 feat: course unit - edit iframe modal window (#35777)
Adds logic to support the functionality of editing xblocks via the legacy modal editing window.
2025-02-20 17:02:43 -03:00
renovate[bot]
0e9fb5d845 chore(config): migrate config .github/renovate.json5 2025-02-20 18:16:32 +00:00
Michael Roytman
7dd4a0969c Merge pull request #36257 from openedx/michaelroytman/COSMO-605-timed-exam-due-date-inconsistencies
Make computation of due date for edx-proctoring powered exams consistent.
2025-02-20 10:36:27 -05:00
michaelroytman
c9beec776f feat: make computation of due date for edx-proctoring powered exams consistent
This commit fixes an inconsistency in the way an exam due date is computed for courses that do not use an LTI based proctoring provider.

The edx-exams microservice was released last year to provide support for LTI based proctoring providers. After the release of this microservice, all proctoring requests initiated by the platform began to be funneled through the microservice, which acted as a broker for these requests, routing them directly to the service for exams in courses using an LTI based proctoring provider or to the platform edx-proctoring plugin for all other cases.

There is an asynchronous task in the platform that syncs exams from the platform to either the edx-exams microservice or the edx-proctoring plugin. Prior to the release of the microservice, this task computed the due date on exams as the exam subsection due date if the course was instructor-paced or None. After the release of the microservice, the task computed due dates differently than before. The due date on exams was computed as the due date on the exam, if there was one, or the end date of the course, if there was one, or None. This differed from the prior definition.

This resulted in inconsistent due date behavior. The exams in courses that were published or republished after the edx-exams microservice was released had the new computation of due date, while exams in courses that were published or republished before the edx-exams microservice was released had the old computation of due date.

This causes an issue for all exams in courses using non-LTI based providers. This is because the due date on exams across all courses that either do not use proctoring or that use a non-LTI based provider are inconsistent, depending on when they were last published.

This commit reintroduces the old computation to the task for exams in courses using a non-LTI based proctoring provider (i.e. those courses whose exams are not powered by the edx-exams microservice). In order to maintain the functionality of edx-exams, we continue to compute the due date as before for exams in courses using an LTI based proctoring provider (i.e. those courses whose exams are powered by the edx-exams microservice).
2025-02-20 09:44:35 -05:00
navinkarkera
ee19fad28d feat: Upgrade Python dependency xblock-drag-and-drop-v2
Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
2025-02-20 13:04:01 +00:00
Feanil Patel
45f44c3965 Merge pull request #36259 from openedx/feanil/fix_docs_build
feanil/fix docs build
2025-02-19 09:27:09 -05:00
Kyle D. McCormick
6124695fdf refactor: Remove broken Force-Publish UI from Studio
Co-Authored-By: Feanil Patel <feanil@axim.org>
2025-02-19 09:07:57 -05:00
Kyle McCormick
569c2d9ad2 Revert "fix: Remove pointless Maintenance and Announcement apps (#35852)"
This reverts commit 9274852f2d.
2025-02-19 09:07:57 -05:00
Chris Chávez
d29ff63e2c fix: Render Word cloud block editor in libraries [FC-0076] (#36199)
* fix: Render Word cloud and conditional block editor

- The xmodule-type to render is MetadataOnlyEditingDescriptor
- The xmodule type `MetadataOnlyEditingDescriptor` renders a `<div>` with the block metadata in the `data-metadata` attribute. But is necessary to call `XBlockEditorView.xblockReady()` to run the scripts to build the editor using the metadata.
- To call XBlockEditorView.xblockReady() we need a specific require.config

* fix: Adding save and cancel button

* fix: save with studio_submit of conditional_block and word_cloud_block

* test: Tests for studio_submit of conditional and word cloud

* revert: Delete studio_submit of conditional block. It is not supported

* style: Fix lint

---------

Co-authored-by: Navin Karkera <navin@opencraft.com>
2025-02-19 18:05:55 +05:30
Ahtisham Shahid
b7a2ffaab8 fix: log only for allowed_enroll email (#36273) 2025-02-19 17:35:43 +05:00
Awais Qureshi
9f5fe30f54 feat!: upgrading get_proctored_exam_results api to DRF ( 32 ) (#35612)
* feat!: upgrading api to DRF
2025-02-19 15:12:39 +05:00
Muhammad Farhan Khan
bdd2bc3cd8 Merge pull request #36270 from openedx/farhan/upgrade-xblocks-contrib-a1d0826
feat: Upgrade Python dependency xblocks-contrib
2025-02-19 11:46:18 +05:00