Commit Graph

67929 Commits

Author SHA1 Message Date
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
Bryann Valderrama
de2c47c1c3 chore: deprecate legacy content library permissions and APIs. 2026-03-02 08:54:51 -05:00
Bryann Valderrama
d05f39c9a8 refactor: remove ContentLibraryPermissionInline from admin interface 2026-03-02 08:54:51 -05:00
Bryann Valderrama
efb3a57d79 chore: deprecate content library authorization rest apis and models 2026-03-02 08:54:51 -05:00
Felipe Bermúdez-Mendoza
b367336d60 feat: make ACCOUNT_MICROFRONTEND_URL site aware. 2026-03-02 08:18:12 -05:00
Rômulo Penido
85e81b32e4 feat: add full screen modal option to base_modal (#38001)
Adds a "Fullscreen" button to the iframe editors for advanced XBlocks
2026-02-27 16:12:04 +00:00
Fox Piacenti
e1757ebd1e feat!: Bump xblocks-contrib to install PDF block by default (#38055)
BREAKING CHANGE: The `pdf` XBlock is now built into the platform core and
installed by default. If you previously installed a third-party pdf
implementation such as https://github.com/open-craft/xblock-pdf, then the
built-in implementation will likely work as a drop-in replacement, so you can
uninstall the third-party implementation. However, if you’d rather continue
using a third-party pdf implementation, then use the `xblock.v1.overrides`
entrypoint. In either case, the third-party implementation must be removed from
the `xblock.v1` entrypoint, otherwise you will see an AmbiguousPluginError.

Co-Authored-By: Kyle McCormick <kyle@axim.org>
2026-02-26 18:14:33 -05:00
Feanil Patel
cd7f2aeee1 fix: use correct Django settings for each service in CI
The static-assets-check workflow was setting DJANGO_SETTINGS_MODULE=lms.envs.production
globally, but then running both LMS and CMS collectstatic. Because manage.py doesn't
override DJANGO_SETTINGS_MODULE when it's already set (and --settings isn't passed),
CMS was running with LMS settings instead of CMS settings.

This meant CMS-specific RequireJS builds (cms/static/cms/js/build.js) were never being
tested, allowing issues like missing modules to slip through to sandbox deployments.

Fix by setting DJANGO_SETTINGS_MODULE explicitly for each service.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-26 15:59:57 -05:00
Feanil Patel
7c9f468d56 refactor: Drop the unused legacy video upload page.
The legacy video uploads page in Studio has been replaced with a new
view in the Authoring MFE.  The legacy page has not been available for
some time, so it's all dead code. This PR removes it.

Please note that there's a waffle flag which enables the MFE version
of the video uploads page: `contentstore.new_studio_mfe.use_new_video_uploads_page`.
Unlike the other Studio MFE waffles, we're NOT going to remove this one now,
because the video uploads page has always been broken for sites other
than edx.org (or sites that have reverse-engineered their video pipeline) so
we'd like to keep the flag until it's either fixed for the community or
removed (https://github.com/openedx/openedx-platform/issues/37972).

This work is part of https://github.com/openedx/edx-platform/issues/36108

Co-Authored-By: Kyle McCormick <kyle@axim.org>
2026-02-26 15:59:57 -05:00
github-actions[bot]
0a9f7898c6 feat: Upgrade Python dependency enterprise-integrated-channels (#38053)
Commit generated by workflow `openedx/openedx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`

Co-authored-by: kiram15 <31229189+kiram15@users.noreply.github.com>
2026-02-26 10:23:35 -07:00
Muhammad Anas
b968eed88b feat: add optional API for hiding the dates tab (#37923) 2026-02-25 16:27:49 -08:00
github-actions[bot]
d9293afde4 chore: Upgrade Python dependency edx-enterprise (#38051)
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-02-25 16:22:28 -05:00
Braden MacDonald
12e9af4f5c fix!: split modulestore's has_course(ignore_case=True) was not working (#38044)
BREAKING CHANGE: this forces course IDs in modulestore to be unique (case insensitive). This was always supposed to be the case, but it wasn't working properly on MySQL. Upgrading past this commit may cause a migration failure if you have conflicting course IDs - see the migration 0004 docstring for details.
2026-02-25 09:05:15 -08:00
Braden MacDonald
3e522d5272 feat: bump opaque-keys to get case-sensitivity support + default max_length (#38044)
refactor: remove some 'max_length=255' to be more DRY

feat: example of making an OpaqueKeyField case_sensitive (modulestore_migrator)

test: update test now that we're using case-insensitive collation on SQLite
2026-02-25 09:05:15 -08:00
Troy Sankey
ef783a1bca chore: bump edx-enterprise-integrated-channels to 0.1.42 (#38049)
ENT-11542
2026-02-24 20:45:57 -07:00
github-actions[bot]
7aa28fc73d feat: Upgrade Python dependency lti-consumer-xblock (#38048)
Commit generated by workflow `openedx/openedx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`

Co-authored-by: navinkarkera <10894099+navinkarkera@users.noreply.github.com>
2026-02-24 16:25:30 +00:00
Peter Pinch
7d162c37c8 Merge pull request #37748 from asajjad2/areeb/last-publish-grade-calc-update
fix: calculate last_grade_publish_date for all unreleased subsections
2026-02-24 10:27:06 -05:00
asajjad2
616c966de7 fix: calculate last_grade_publish_date for all unreleased subsections
fix: don't update business logic

fix: comparison condition

fix: linting errors

fix: linting error

test: progress api test

test: add not-null scenario

fix: linting errors

test: fix assertion

refactor: tests
2026-02-24 18:52:14 +05:00
Muhammad Farhan Khan
ee3551538c test: Move VideoConfigService related tests near inside its app (#38008) 2026-02-24 12:18:27 +05:00
David Ormsbee
873f42ab14 refactor: update openedx_content contents -> media(#38037)
Update our calls to the openedx_content API to reflect 0.35.0's shift
in terminology from "contents" to "media".

---------

Co-authored-by: Kyle McCormick <kyle@axim.org>
2026-02-23 22:34:33 -05:00
Kyle D McCormick
e5ebde83f2 build: Loosen openedx-core constraint to allow patch upgrades 2026-02-20 20:02:59 -05:00
Kyle D McCormick
f4ce78db51 fix: Upgrade openedx-core to fix LanguageTaxonomy data bug 2026-02-20 20:02:59 -05:00
Taylor Payne
7499a5f1e6 feat: authorize advanced settings endpoints via openedx-authz when fl… (#38009) 2026-02-19 12:03:11 -07:00
brianjbuck-wgu
8b3c3fd52f feat: Simplify content groups v2 response JSON (#37976) 2026-02-19 10:43:14 -07:00
Irtaza Akram
76018183d4 Use runtime-provided XQueueService instead of constructing it in ProblemBlock (#37998)
* fix: move xqueue services
2026-02-19 11:02:00 +05:00
Kyle McCormick
c70bfe980a build!: Switch to openedx-core (renamed from openedx-learning) (#38011)
build!: Switch to openedx-core (renamed from openedx-learning)

Instead of installing openedx-learning==0.32.0, we install openedx-core==0.34.1.
We update various class names, function names, docstrings, and comments to
represent the rename:

* We say "openedx-core" when referring to the whole repo or PyPI project
  * or occasionally "Open edX Core" if we want it to look nice in the docs.
* We say "openedx_content" to refer to the Content API within openedx-core,
   which is actually the thing we have been calling "Learning Core" all along.
  * In snake-case code, it's `*_openedx_content_*`.
  * In camel-case code, it's `*OpenedXContent*`

For consistency's sake we avoid anything else like oex_core, OeXCore,
OpenEdXCore, OexContent, openedx-content, OpenEdxContent, etc.
There should be no more references to learning_core, learning-core, Learning Core,
Learning-Core, LC, openedx-learning, openedx_learning, etc.

BREAKING CHANGE: for openedx-learning/openedx-core developers:
You may need to uninstall openedx-learning and re-install openedx-core
from your venv. If running tutor, you may need to un-mount openedx-learning,
rename the directory to openedx-core, re-mount it, and re-build.
The code APIs themselves are fully backwards-compatible.

Part of: https://github.com/openedx/openedx-core/issues/470
2026-02-18 22:38:25 +00:00
Chris Chávez
5e75d3cce4 feat: Make selectable component cards (#38010)
- Styles to make component cards selectable.
- Action to select a component and send a message to the parent of the iframe
- Handler for a "deselect all" message and for selecting a specific component
2026-02-18 20:34:35 +00:00
brianjbuck-wgu
43690553f6 fix: Add group_id and user_partition_id support to Cohorts API v1 (#37982) 2026-02-17 15:09:51 -07:00
wgu-jesse-stewart
b98e41e339 feat: add v2 REST API endpoints for instructor dashboard data downloads (#37984) 2026-02-17 12:40:21 -07:00
Muhammad Farhan Khan
8dd99defac chore: optimize/correct the VideoBlock code (#38012)
- Change the `i18n` service declaration from `wants` to `needs`, since the
  runtime must provide it for the block to function correctly.

- Update the `public_view` webpack JS reference from `VideoBlockMain` to
  `VideoBlockDisplay`, as all VideoBlock JS files are bundled into
  `VideoBlockDisplay` and `VideoBlockMain` is not referring to anything
   or no longer exists in the repository.
2026-02-17 21:28:46 +05:00
Kyle McCormick
a55c1ddabf chore: Switch to new openedx-learning import paths (#38004)
Upgrades openedx-learning from 0.31.0 to 0.32.0,
incorporating a major openedx-learning Python API
restructuring: ca0b3eb
2026-02-13 20:39:05 +00:00