Skip to content

Releases: openedx/openedx-core

0.43.0

21 Apr 17:07
d0dc9cd

Choose a tag to compare

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.keyLearningPackage.package_ref.
  • Renamed PublishableEntity.keyPublishableEntity.entity_ref.
  • Renamed PublishableEntityMixin.keyPublishableEntityMixin.entity_ref.
  • Renamed property PublishableEntityVersion.keyPublishableEntityVersion.entity_ref.
  • Renamed Collection.keyCollection.collection_code. Now validates against [A-Za-z0-9\-\_\.]+.
  • Renamed Component.local_keyComponent.component_code. Now validates against [A-Za-z0-9\-\_\.]+ with max_length=255 (was 500).
  • Added Container.container_code field and Container.learning_package FK. UniqueConstraint on (learning_package, container_code) — unlike components, container codes are not scoped by type. For existing containers, container_code is backfilled from the entity key via data migration.
  • Renamed ComponentVersionMedia.keyComponentVersionMedia.path.
  • Added PublishLogRecord.direct field (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 param keypackage_ref.
  • In create_publishable_entity(...): renamed param keyentity_ref.
  • Renamed get_publishable_entity_by_key(...)get_publishable_entity_by_ref(...), param keyentity_ref.
  • Renamed get_learning_package_by_key(...)get_learning_package_by_ref(...), param keypackage_ref.
  • PublishLogRecord.direct is now populated during publish operations to distinguish direct vs. indirect publish records.

components

  • Renamed Component.local_keyComponent.component_code in 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(...)): param keycontainer_code.
  • Renamed get_container_by_key(...)get_container_by_code(...), param keycontainer_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): param key/collection_keycollection_code.
  • In get_entity_collections(...): renamed param entity_keyentity_ref.

media

  • In create_component_version_media(...): renamed param keypath.
  • In look_up_component_version_media(...): renamed param keypath, learning_package_keylearning_package_ref, component_keyentity_ref.
  • In the add_assets_to_component management command: renamed arguments learning_package_keylearning_package_ref, component_keyentity_ref.

backup_restore

  • In load_learning_package(...): renamed param keypackage_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"]. If archive_package_ref cannot be parsed into {prefix}:{org_code}:{package_code}, then archive_org_code and archive_package_code will be None (previously raised ValueError).
  • Fixed a bug where version_num was incorrectly passed to create_next_container_version() when restoring archives with published containers, causing a TypeError.

Other

  • Upgraded Python testing requirements.

Full changelog

v0.39.2...v0.43.0

v0.39.2

13 Apr 21:55
5391abc

Choose a tag to compare

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

v0.39.0

13 Apr 17:11
54ef873

Choose a tag to compare

What's Changed

Full Changelog: v0.38.3...v0.39.0

v0.38.3

13 Apr 15:52

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.38.2...v0.38.3

v0.38.2

01 Apr 19:07

Choose a tag to compare

What's Changed

Full Changelog: v0.38.1...v0.38.2

v0.38.1

01 Apr 17:54
c997e66

Choose a tag to compare

What's Changed

Full Changelog: v0.38.0...v0.38.1

v0.38.0

26 Mar 21:36
02908db

Choose a tag to compare

What's Changed

Full Changelog: v0.37.0...v0.38.0

v0.37.0

12 Mar 17:47
848f663

Choose a tag to compare

What's Changed

Full Changelog: v0.36.0...v0.37.0

v0.36.0

09 Mar 23:26
3c68678

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.35.0...v0.36.0

v0.35.0

23 Feb 20:09

Choose a tag to compare

What's Changed

  • Refactor: move "contents" applet to be "media" by @ormsbee in #488

Full Changelog: v0.34.2...v0.35.0