67959 Commits

Author SHA1 Message Date
Braden MacDonald
3fa779479e feat: update openedx-core: new catalog models + backfill migration (#38023)
Some checks failed
Pylint Checks / pylint xmodule (push) Has been cancelled
Quality checks / Quality Others (20, ubuntu-24.04, 3.11) (push) Has been cancelled
Semgrep code quality / Semgrep analysis (ubuntu-latest, 3.11) (push) Has been cancelled
ShellCheck / shellcheck (ubuntu) (push) Has been cancelled
static assets check for lms and cms / static-assets-check (7.0, 20, 10.7.x, ubuntu-24.04, 3.11) (push) Has been cancelled
unit-tests / xmodule-with-cms(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / xmodule-with-lms(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / cms-1(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / cms-2(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / common-with-cms(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / common-with-lms(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-1(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-2(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-3(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-4(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-5(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-6(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / openedx-1-with-cms(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / openedx-1-with-lms(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / openedx-2-with-cms(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / openedx-2-with-lms(py=3.11,dj=pinned,mongo=7.0) (push) Has been cancelled
ShellCheck / shellcheck (macos) (push) Has been cancelled
Javascript tests / JS (20, ubuntu-latest, 3.11) (push) Has been cancelled
Pylint Checks / pylint cms (push) Has been cancelled
Lint Python Imports / Lint Python Imports (push) Has been cancelled
Lockfile Version check / version-check (push) Has been cancelled
Check Django Migrations / check migrations (pinned, 7, 8, ubuntu-24.04, 3.11) (push) Has been cancelled
Pylint Checks / pylint common (push) Has been cancelled
units-test-scripts-common / test (3.12) (push) Has been cancelled
units-test-scripts-user-retirement / test (3.12) (push) Has been cancelled
Verify Dunder __init__.py Files / Verify __init__.py Files (push) Has been cancelled
Pylint Checks / pylint lms-1 (push) Has been cancelled
Pylint Checks / pylint lms-2 (push) Has been cancelled
Pylint Checks / pylint openedx-1 (push) Has been cancelled
Pylint Checks / pylint openedx-2 (push) Has been cancelled
unit-tests / cms-1(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / cms-2(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / common-with-cms(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / common-with-lms(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-1(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-2(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-3(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-4(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-5(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / lms-6(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / openedx-1-with-cms(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / openedx-1-with-lms(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / openedx-2-with-cms(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / openedx-2-with-lms(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / xmodule-with-cms(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / xmodule-with-lms(py=3.12,dj=pinned,mongo=7.0) (push) Has been cancelled
unit-tests / collect-and-verify (push) Has been cancelled
Pylint Checks / Pylint checks successful (push) Has been cancelled
Check Django Migrations / Migrations checks successful (push) Has been cancelled
unit-tests / Unit tests successful (push) Has been cancelled
unit-tests / compile-warnings-report (push) Has been cancelled
unit-tests / merge-artifacts (push) Has been cancelled
unit-tests / coverage (3.11) (push) Has been cancelled
* feat: use new version of openedx-core
* feat: Use openedx_catalog app, backfill it with all known courses
* feat: properly set "created" timestamp on course runs during backfill
* fix: better normalization of language codes
* feat: keep courses in sync with CourseRun/CatalogCourse
* feat: delete CourseRun/CatalogCourse when deleting a course
* refactor: course_id -> course_key, run -> run_code, display_name -> title
* fix: don't use SplitModulestoreCourseIndex for getting list of all courses
2026-03-09 17:24:02 -07:00
pbitla-sonata
f4cb7b9ed9 chore: bumped edx-enterprise version to 6.6.7 (#38120) 2026-03-09 13:21:56 -06:00
github-actions[bot]
a60fe24e3a feat: Upgrade Python dependency enterprise-integrated-channels (#38128)
Commit generated by workflow `openedx/openedx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`

Co-authored-by: bcitro <67378070+bcitro@users.noreply.github.com>
2026-03-09 14:37:50 -04:00
Muhammad Farhan Khan
9b6445cb7b refactor: use video block utils from xblocks-contrib package (#38088)
* refactor: use bumper_utils from xblocks-contrib package
* refactor: use video_handlers from xblocks-contrib package
* fix: fix test_video_handlers test cases
2026-03-09 17:13:16 +05:00
Muhammad Qasim Gulzar
68a53b8506 fix: error on postgresql 14 due to BIGSERIAL (#38040)
This pull request makes a targeted update to how PostgreSQL database
types are specified in the courseware/fields.py file. Specifically,
it changes the type returned for PostgreSQL from BIGSERIAL to BIGINT
in both the db_type and rel_db_type methods. This ensures that
auto-incrementing behavior is not implicitly assumed and aligns with 
scenarios where a plain integer type is needed.
2026-03-07 20:12:57 -05:00
Rodrigo Mendez
12a46e6463 feat: AuthZ for course authoring compatibility layer (#38013) 2026-03-06 09:35:17 -07:00
navinkarkera
0c5e96d566 feat: Upgrade Python dependency lti-consumer-xblock
Commit generated by workflow `openedx/openedx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
2026-03-06 12:13:49 +05:00
Brian Beggs
a97c19301d chore: upgrade enterprise-integrated-chanels to 0.1.48 (#38118) 2026-03-05 15:24:53 -07:00
brianjbuck-wgu
99837dfaf7 fix: log warning when INSTRUCTOR_MICROFRONTEND_URL is unset (#38000) 2026-03-05 14:26:17 -07:00
iloveagent57
9719ea7f3d feat: Upgrade Python dependency enterprise-integrated-channels
fix: lms config 400 errors when editing SAP etc

Commit generated by workflow `openedx/openedx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
2026-03-05 15:29:50 -05:00
Agrendalath
ba5e620e3e fix: typo in the "from allowed to enroll to unenrolled" transition state 2026-03-05 14:57:05 -05:00
Muhammad Anas
1599b80a74 fix: respect masqueraded learner permissions when computing subsection show_grades in Progress Tab API (#38025)
This PR fixes grade-visibility behavior in the Progress Tab API when staff
users are masquerading as learners.

Previously, subsection show_grades was computed using the real requester’s
staff access, which could expose grades that the masqueraded learner should not
see.

Now, show_grades respects the masqueraded user’s permissions so the API
response matches the learner view.

Co-authored-by: Peter Pinch <pdpinch@mit.edu>
2026-03-05 12:00:07 -05:00
Artur Filippovskii
05f51e8ea3 fix Remove prerequisites and ocw_links from course_about.html (#37480)
Closes: https://github.com/openedx/openedx-platform/issues/37022

Co-authored-by: Peter Kulko <93188219+PKulkoRaccoonGang@users.noreply.github.com>
2026-03-05 11:30:27 -05:00
Daniel Wong
0fddf77ce2 chore: bump edx-when to 3.2.1 (#38096) 2026-03-05 09:09:14 -07:00
Muhammad Waleed
11840267f0 Fix: Create SearchAccess on library creation for course creator search access (#38091)
* fix: create SearchAccess on library creation for course creator search access

When a course creator creates a new library, the SearchAccess record must exist immediately so their JWT token can include the library's access_id. Without this, course creators cannot see newly added components in search results until the page is refreshed.

This issue doesn't affect superusers who bypass access_id filtering.

* test: verify SearchAccess is created automatically on library creation

---------

Co-authored-by: Usama Sadiq <usama7274@gmail.com>
2026-03-05 15:21:42 +05:00
Kira Miller
e7377d46f1 fix: add additional kwargs to USER_RETIRE_LMS (#38078) 2026-03-04 14:02:21 -07:00
Feanil Patel
f802f578e5 build: Fix the docs build.
Our use of `fs` means we have a runtime dependency on setuptools. The
newest version is not compatible with the current version of `fs` so
we've added a constraint.  But the docs build didn't previously install
our specified version of setuptools.  This is to fix that.
2026-03-04 14:22:55 -05:00
Feanil Patel
467495cb22 feanil/pycodestyle to ruff (#38076)
* feat: add ruff and configure it to match current pycodestyle rules

Adds ruff to testing requirements and configures it in pyproject.toml
to enforce the same E/W rules that pycodestyle 2.8.x was enforcing.
Two additional rules (E714, E721) that pycodestyle 2.8.x did not enforce
are explicitly ignored for now and can be cleaned up in a follow-up.

Part of the migration from pycodestyle → ruff.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add ruff Makefile target

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add ruff to quality CI workflow alongside pycodestyle

Runs ruff alongside pycodestyle so we can validate parity before
removing pycodestyle in the next commit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: remove pycodestyle, replaced by ruff

- Remove pycodestyle from requirements
- Remove pycodestyle version constraint (pinned to <2.9.0 due to a
  false positive E275 bug that is no longer relevant)
- Remove [pycodestyle] config from setup.cfg (config now lives in
  pyproject.toml under [tool.ruff])
- Remove pycodestyle Makefile target
- Remove make pycodestyle from quality CI workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* style: Apply suggestions from code review

Remove unnecessary ignores.

Co-authored-by: Braden MacDonald <braden@opencraft.com>

* style: Fix a style isusue and remove ignores.

Most of these ignores are unnecessary as we're passing them now and we
want to check them in the future. E714 only had one fixable violation so
we just fixed it.

* style: Update ruff config and workflows

* Update the call to `ruff` so that it outputs in a github friendly
manner.

* Remove ruff exclusions that are already covered by .gitignore which
  ruff respects.

* chore: Recompile requirements.

Update the requirements to drop pycodestyle and add ruff.

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Braden MacDonald <braden@opencraft.com>
2026-03-04 17:33:06 +00:00
Feanil Patel
b5a9fff969 fix: update karma-jasmine to ^1 for karma 6 compatibility
karma-jasmine 1.x is the last major version that:
- Works with karma 6.x (peer dep: karma: '*')
- Works with jasmine-core 2.x (peer dep: jasmine-core: '*')

Version 2.x+ requires jasmine-core 3.x which is incompatible with
the pinned jasmine-core@2.6.4 (required for edx-ui-toolkit).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-04 10:13:18 -05:00
Feanil Patel
8048dbfb3a fix: exclude test entry points from karma sourceFiles patterns
In karma 6, files matched by earlier patterns aren't overridden by later
patterns. The sourceFiles patterns like `cms/**/!(*spec|djangojs).js`
matched test entry files (e.g., `cms/js/spec/main.js`) because they
don't end with "spec" or "djangojs". This prevented runFiles from
setting `included: true` on these files, so tests never started.

Split the sourceFiles patterns to precisely exclude spec/main*.js test
entry points while still serving other source files:
- Direct children of the js directory
- Subdirectories except spec/
- spec/ subdirectory, excluding main* files

This allows runFiles to control test entry point inclusion.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-04 10:13:18 -05:00
renovate[bot]
1dcbd28e01 chore(deps): update dependency karma to v6 [security] 2026-03-04 10:13:18 -05:00
github-actions[bot]
f09db810c5 feat: Upgrade Python dependency xblocks-contrib (#38083)
chore: Update xblocks-contrib pypi package

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

Co-authored-by: farhan <25842457+farhan@users.noreply.github.com>
2026-03-04 16:00:12 +05:00
renovate[bot]
72c2bf6b02 chore(deps): update dependency underscore to v1.13.8 [security] (#38077)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 21:53:56 +00:00
feanil
ce3e8b2f6f feat: Upgrade Python dependency Django
Update to latest django patch version.

Commit generated by workflow `openedx/openedx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
2026-03-03 15:41:38 -05:00
Brian Buck
15a252fdc3 feat: The API now returns learner_count and staff_count alongside the existing enrollment fields. 2026-03-03 11:26:17 -07:00
Brian Buck
44521091aa fix: optimize enrollment counts to use read replica and show all configured modes (#38006) 2026-03-03 11:26:17 -07:00
Feanil Patel
8143796b26 docs: update references from setup.py to pyproject.toml
Update documentation, comments, and docstrings throughout the codebase
to reflect the migration from setup.py to pyproject.toml:

- Transformer class docstrings: changed to reference "entry point name
  in the package configuration" for better future-proofing
- Block structure module docs: updated to reference pyproject.toml
- Test file comments: updated entry point references
- Config files (tox.ini, pytest.ini): updated references
- Documentation (extension_points.rst, course apps ADRs): updated to
  reference pyproject.toml with inclusive language for external packages
- Requirements documentation (github.in): updated with inclusive language
- edxmako README: modernized install command to use pip install

Historical ADRs and references to external packages that may still use
setup.py were intentionally left unchanged or updated with inclusive
language acknowledging both pyproject.toml and setup.py.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
98ec84aec8 feat: delete setup.py - migration complete
Removes setup.py as all configuration has been migrated to pyproject.toml
(PEP 621).

Verification confirms:
- Package installs correctly with pip install -e .
- All 142 entry points discoverable via importlib.metadata
- All tool configurations (pytest, pycodestyle, isort, importlinter) working
- Django checks pass for both LMS and CMS

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
b81a81cbd7 feat: migrate import linter configuration to pyproject.toml
Migrates complete importlinter configuration from setup.cfg, preserving
all 4 contracts, ignore_imports with explanatory comments, and GitHub
issue references.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
bbc12f1b02 feat: migrate pytest configuration to pyproject.toml
Migrates pytest configuration from setup.cfg, preserving all settings
and comments including warning filters and test discovery patterns.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
af55bcfe22 feat: migrate remaining plugin entry points to pyproject.toml
Migrates final 6 entry point groups from setup.py (user_partition_scheme,
ace.policy, call_to_action, learning_context, dynamic_partition_generator,
console_scripts).

Simplifies setup.py to just call setup() with no arguments - all entry
points now defined in pyproject.toml.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
cadeb0ec75 feat: migrate block transformer entry points to pyproject.toml
Migrates 17 openedx.block_structure_transformer entry points from
setup.py.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
0db54143f9 feat: migrate CMS Django app entry points to pyproject.toml
Migrates 14 cms.djangoapp entry points from setup.py. Preserves
important comment explaining why discussion app (from LMS) is
imported into Studio process.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
682bbc111c feat: migrate LMS Django app entry points to pyproject.toml
Migrates 17 lms.djangoapp entry points from setup.py.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
2e01492e49 feat: migrate course tool entry points to pyproject.toml
Migrates 4 openedx.course_tool entry points from setup.py.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
a3259049dd feat: migrate course app entry points to pyproject.toml
Migrates 12 openedx.course_app entry points from setup.py.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
2cdccb34dd feat: migrate course tab entry points to pyproject.toml
Migrates 19 openedx.course_tab entry points from setup.py.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
5949f8dde3 feat: migrate XBlock Asides entry points to pyproject.toml
Migrates 1 xblock_asides.v1 entry point from setup.py. Removes
XBLOCKS_ASIDES constant as it's no longer needed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
e548ba8980 feat: migrate XBlock entry points to pyproject.toml
Migrates 30 xblock.v1 entry points from setup.py. Removes XBLOCKS
constant as it's no longer needed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
642fa02710 feat: migrate package metadata to pyproject.toml
Migrates package metadata from setup.py including version, dependencies,
and package definitions.

Changes package name from "Open edX" to "openedx-platform" to comply
with PEP 508 (no spaces allowed). This is safe as the package is not
published and dependents rely on entry points, not the package name.

Simplifies setup.py to contain only entry_points, which will be migrated
in subsequent commits.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
d30c730a3b feat: initialize pyproject.toml with build system
Adds initial pyproject.toml with build system configuration using
setuptools>=61.0 (PEP 621 compatible). No functional changes yet -
setup.py remains fully functional.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-03 10:46:16 -05:00
Feanil Patel
5cc1883f42 chore: Run make upgrade 2026-03-02 20:02:10 -05:00
Feanil Patel
35b55821c6 build: Explicitly add types-requests to development requirements.
djangorestframework-stubs==3.16.8 dropped types-requests as a
transitive dependency. Since edx-platform uses the requests library
directly, we need to pin types-requests explicitly so that mypy can
type-check our code correctly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 20:02:10 -05:00
Feanil Patel
9c89a1b91e build: Constrain astroid to fix make upgrade.
The latest version of pylint pins back astroid to an older version. This
hold back is not caught in the docs requirements file and since both the
docs and testing file are required in the development.in file, we fail
to compile development.txt because of conflicting dependencies.

Holding astroid back until pylint releases a new version that works with
the latest version of astroid.

Created https://github.com/openedx/openedx-platform/issues/38066 to undo
this.
2026-03-02 20:02:10 -05:00
Kyle McCormick
a31e256049 refactor: Remove old unused stub asset script (#37967)
Should have been removed as part of
https://github.com/openedx/openedx-platform/issues/31604
2026-03-02 20:08:05 +00:00
Alexander Dusenbery
2fcce121e9 feat: make marketing email and research opt-in checkboxs selectively ignorable
We want to support a flow for SSO-enabled Enterprise customers who have
agreed off-platform that none of their learners will opt-in to marketing emails
or sharing research data. This change proposes to do so by
adding an optional field that, when enabled, disables the presence of
the two checkboxes on this registration form and sets their values to false.

ENT-11401
2026-03-02 12:47:21 -05:00
dependabot[bot]
5e36a38569 build(deps): bump actions/download-artifact from 7 to 8
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 11:52:55 -05:00
dependabot[bot]
90eae7d14e build(deps): bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 11:52:34 -05:00
feanil
7866c68dbf chore: geoip2: update maxmind geolite country database 2026-03-02 09:30:13 -05:00
Bryann Valderrama
71ecea98cd chore: update deprecation warnings to include alternative methods and views 2026-03-02 08:54:51 -05:00