Releases: openedx/openedx-core
v1.0.1
What's Changed
- fix: Handle Taxonomy CASCADE deletes in _is_explicit_tag_delete by @kdmccormick in #575
Full Changelog: v1.0.0...v1.0.1
v1.0.0
v0.48.1
What's Changed
- revert: don't allow publishing within a draft change log context by @bradenmacdonald in #574
Full Changelog: v0.48.0...v0.48.1
v0.48.0
What's Changed
- Validation when publishing with
publish_dependencies=Falseby @bradenmacdonald in #569 - docs: remove incorrect comment by @ormsbee in #570
- Improve validation of openedx_content to prevent creation of corrupt states by @bradenmacdonald in #521
- fix: handle duplicates when applying
CompontentTypeconstraint by @bradenmacdonald in #572 - Delete tag updates meilisearch by @mgwozdz-unicon in #571
Full Changelog: v0.47.0...v0.48.0
v0.47.0
v0.46.0
What's Changed
- chore: Upgrade Python requirements by @edx-requirements-bot in #563
- Emit events when content is modified or published by @bradenmacdonald in #543
Full Changelog: v0.45.0...v0.46.0
v0.45.0
What's Changed
- feat: New
history logapi functions [FC-0123] by @ChrisChV in #501 - refactor: make object tag permission checks modular by @wgu-taylor-payne in #550
New Contributors
- @wgu-taylor-payne made their first contribution in #550
Full Changelog: v0.44.0...v0.45.0
v0.44.0
What's Changed
- fix: tag rename capitalization by @jesperhodge in #555
- feat: Reinstate support for Unicode component_codes and container_codes by @kdmccormick in #558
Full Changelog: v0.43.0...v0.44.0
0.43.0
Release Notes: v0.39.2 → v0.43.0
Generated by Claude based on the commit messages, reviewed by @kdmccormick .
This release is dominated by the "keys cleanup" initiative (#322, OEP-68). Various key fields throughout the codebase have been renamed to be more descriptive and intentional: collection_code, component_code, container_code, entity_ref, package_ref, and path. The goal is to stop treating these fields as parseable pseudo-keys and instead make their roles explicit: "codes" are human-readable slugs scoped within a LearningPackage, while "refs" are opaque externally-supplied identifiers whose internal structure should not be assumed.
Additionally, PublishLogRecord now tracks whether each record was a direct or indirect result of a publish action, enabling richer publish history UX.
Backup-restore continues to read and write the old key field names in TOML files for backwards compatibility with Ulmo-era archives. This may change in a future "v2" format.
openedx_django_lib
- Renamed
key_field(...)→ref_field(...).
models
- Renamed
LearningPackage.key→LearningPackage.package_ref. - Renamed
PublishableEntity.key→PublishableEntity.entity_ref. - Renamed
PublishableEntityMixin.key→PublishableEntityMixin.entity_ref. - Renamed property
PublishableEntityVersion.key→PublishableEntityVersion.entity_ref. - Renamed
Collection.key→Collection.collection_code. Now validates against[A-Za-z0-9\-\_\.]+. - Renamed
Component.local_key→Component.component_code. Now validates against[A-Za-z0-9\-\_\.]+withmax_length=255(was 500). - Added
Container.container_codefield andContainer.learning_packageFK.UniqueConstrainton(learning_package, container_code)— unlike components, container codes are not scoped by type. For existing containers,container_codeis backfilled from the entity key via data migration. - Renamed
ComponentVersionMedia.key→ComponentVersionMedia.path. - Added
PublishLogRecord.directfield (nullable boolean).True= explicitly requested by the author,False= indirectly published/affected,None= pre-existing record where intent cannot be determined retroactively.
publishing
- In
create_learning_package(...),update_learning_package(...),learning_package_exists(...): renamed paramkey→package_ref. - In
create_publishable_entity(...): renamed paramkey→entity_ref. - Renamed
get_publishable_entity_by_key(...)→get_publishable_entity_by_ref(...), paramkey→entity_ref. - Renamed
get_learning_package_by_key(...)→get_learning_package_by_ref(...), paramkey→package_ref. PublishLogRecord.directis now populated during publish operations to distinguish direct vs. indirect publish records.
components
- Renamed
Component.local_key→Component.component_codein all API functions:create_component(...),create_component_and_version(...),get_component_by_key(...)→get_component_by_code(...),component_exists_by_key(...)→component_exists_by_code(...). - Removed
get_or_create_component_type_by_entity_key().
containers
create_container(...),create_container_and_version(...), and their typed wrappers (create_unit_and_version(...),create_subsection_and_version(...),create_section_and_version(...)): paramkey→container_code.- Renamed
get_container_by_key(...)→get_container_by_code(...), paramkey→container_code. - Renamed
get_container_children_entities_keys(...)→get_container_children_entity_refs(...).
collections
- All API functions (
create_collection,get_collection,update_collection,delete_collection,restore_collection,add_to_collection,remove_from_collection,get_collection_entities): paramkey/collection_key→collection_code. - In
get_entity_collections(...): renamed paramentity_key→entity_ref.
media
- In
create_component_version_media(...): renamed paramkey→path. - In
look_up_component_version_media(...): renamed paramkey→path,learning_package_key→learning_package_ref,component_key→entity_ref. - In the
add_assets_to_componentmanagement command: renamed argumentslearning_package_key→learning_package_ref,component_key→entity_ref.
backup_restore
- In
load_learning_package(...): renamed paramkey→package_ref. - In the return dict, within
["lp_restored_data"]: renamed["key"]→["package_ref"],["archive_lp_key"]→["archive_package_ref"],["archive_org_key"]→["archive_org_code"],["archive_slug"]→["archive_package_code"]. Ifarchive_package_refcannot be parsed into{prefix}:{org_code}:{package_code}, thenarchive_org_codeandarchive_package_codewill beNone(previously raisedValueError). - Fixed a bug where
version_numwas incorrectly passed tocreate_next_container_version()when restoring archives with published containers, causing aTypeError.
Other
- Upgraded Python testing requirements.
Full changelog
v0.39.2
What's Changed
- Better handling of IntegrityError in tagging REST APIs by @jesperhodge in #536
- Tagging APIs can properly report implicit tag usage counts by @tbain in #506
New Contributors
Full Changelog: v0.39.0...v0.39.2