Skip to content

refactor: Upgrade to openedx-core 0.43.0 (for OEP-68)#38402

Draft
kdmccormick wants to merge 10 commits intomasterfrom
kdmccormick/keys
Draft

refactor: Upgrade to openedx-core 0.43.0 (for OEP-68)#38402
kdmccormick wants to merge 10 commits intomasterfrom
kdmccormick/keys

Conversation

@kdmccormick
Copy link
Copy Markdown
Member

@kdmccormick kdmccormick commented Apr 21, 2026

Description

This PR incorporates a major set of renamings from openedx-core: openedx-core 0.43.0

Part of: openedx/openedx-core#322
Related to: OEP-68

Status

  • CI is all mostly or entirely passing ✅
  • Claude wrote most of this. I've reviewed about half of it, need to review the other half 👀
  • Needs manual testing ⚠️

AI Usage

Claude Plan: https://gist.github.com/kdmccormick/7316d5fe490763cf12e9687e6fb24db8

I basically gave Claude the release notes (linked above) and had it write the plan from that.

I additionally gave it the instructions to avoid any breaking changes to REST APIs or the libraries search index. That'll be handled later in #38406

It seems to have overall done a good job, although it missed several renames, which you can see in the commit fix: various fixes to Claude's output...

@kdmccormick kdmccormick force-pushed the kdmccormick/keys branch 2 times, most recently from 5b949fa to 5dae386 Compare April 22, 2026 00:43
admin = UserFactory.create(username="Admin", email="admin@example.com", is_staff=True) # noqa: F841

lib = self._create_library(slug="téstlꜟط", title="A Tést Lꜟطrary", description="Tésting XBlocks")
lib = self._create_library(slug="testlib", title="A Tést Lꜟطrary", description="Tésting XBlocks")
Copy link
Copy Markdown
Member Author

@kdmccormick kdmccormick Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ormsbee @bradenmacdonald , our new code_field validation makes these non-ascii library and block slugs illegal. Is that fine?

I recall adding these non-ascii test slugs myself, way back in the Blockstore->LearningCore switchover. I don't know exactly what I was thinking--maybe I was just thinking that we'd made no statements about what could and couldn't be in a LearningCore slug, so we may as well test non-ascii slugs in order to see if they ever break.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ormsbee @bradenmacdonald , our new code_field validation makes these non-ascii library and block slugs illegal. Is that fine?

Isn't it already illegal because it's put into an opaque key, and those don't support Unicode?

FWIW, in general I would prefer to have the ability to have non-ascii in the URLs, especially given our international reach. But that's something we can add in later in a backwards compatible way if we get support through all the plumbing.

@kdmccormick kdmccormick added the create-sandbox open-craft-grove should create a sandbox environment from this PR label Apr 22, 2026
kdmccormick and others added 10 commits April 21, 2026 22:27
Renames the openedx_django_lib.fields import in EntityLinkBase from
the removed key_field helper to ref_field.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…0.43.0

Updates callers of get_learning_package_by_key (renamed to
get_learning_package_by_ref), create_learning_package, and
update_learning_package to use the new package_ref kwarg, and
switches .key attribute reads to .package_ref.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… 0.43.0

Switches callers of get_publishable_entity_by_key (now _by_ref) to the
new name, and renames .key attribute reads on PublishableEntity,
Component, and Container (via PublishableEntityMixin) to .entity_ref.
Query filters using key__in/entity__key become entity_ref__in/
entity__entity_ref. The set_library_item_collections param entity_key
is renamed to entity_ref for consistency.

Collection.key reads are intentionally left for the collection_code
rename in a later commit.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…re 0.43.0

Updates callers of get_component_by_key/component_exists_by_key (now
_by_code) and switches the local_key kwarg on create_component,
create_component_and_version, and related queries to component_code.
Also renames component.local_key reads to component.component_code and
adjusts a modulestore_migrator container query that filtered on
publishable_entity__key (now entity_ref).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…edx-core 0.43.0

Switches get_container_by_key to get_container_by_code and renames the
container creation kwarg from key to container_code for both
create_container_and_version and its platform wrapper. Updates
ComponentVersionMedia accesses: the model field .key becomes .path,
and create_component_version_media's key kwarg becomes path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…-core 0.43.0

Renames all Collection APIs that took key/collection_key to use
collection_code: create_collection, update_collection, delete_collection,
restore_collection, add_to_collection, etc. Switches Collection.key
attribute reads to .collection_code across tests, signal handlers,
search indexers, and modulestore_migrator. Filters like
target_collection__key become target_collection__collection_code.

Also updates the library restore serializer to track the renamed
lp_restored_data fields: archive_org_key -> archive_org_code,
archive_slug -> archive_package_code, key -> package_ref,
archive_lp_key -> archive_package_ref. The archive_org_code and
archive_package_code fields now allow None, since openedx-core no
longer raises ValueError when the archive_package_ref cannot be
parsed as {prefix}:{org_code}:{package_code}.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
	fix: build locator with container_code

	fix: pylint and mypy

	fix: queries for search index

	fix: some missed cvm.key -> cvm.path

	fix: undo breaking library changes

	fix: openedx-core no longer raises integrityerror on conflict

	fix: misses in modulestore_migrator

	fix: search tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

create-sandbox open-craft-grove should create a sandbox environment from this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants