Skip to content

Conversation

@kdmccormick
Copy link
Member

@kdmccormick kdmccormick commented Jan 7, 2026

Description & Supporting Info

XModuleMixin and CourseOverview both provided some backcompat names for some XBlock key attributes. Due to refactors in edx-platform and improvements to the XBlock API that have happened over the years, we can now simplify these backcompat mappings. The new mappings (old -> new) are:

  • .course_id -> .context_key
  • .location -> .usage_key
  • .url_name -> .usage_key.block_id
  • .category -> .usage_key.block_type

These are the ways we would like developers to access these attributes going forward, so it's important that we use them in XModuleMixin and CourseOverview to set a good example.

We also remove the block_metadata_utils.url_name_for_block method, as it was unnecessarily indirect for such a simple operation. There are no remaining references to it in edx-platform.

Note: It is technically correct to go through .scope_ids for these fields, but it's harder to read. Under the hood, the XBlock API indeed uses .scope_ids:
https://github.com/openedx/XBlock/blob/v5.3.0/xblock/core.py#L422-L446

Testing instructions

None

Deadline

Soon, as this influences openedx/xblocks-contrib#128

XModuleMixin and CourseOverview both provided some backcompat names
for some XBlock key attributes. Due to refactors that have happened
in edx-platform and improvements to the XBlock API that have happened
over the years, we can now simplify these backcompat mappings. The
new mappings (old -> new) are:

* .course_id -> .context_key
* .location -> .usage_key
* .url_name -> .usage_key.block_id
* .category -> .usage_key.block_type

These are the ways we would like developers to access these
attributes going forward, so it's important that we set the
example in XModuleMixin and CourseOverview.

Note: It is technically correct to go through `.scope_ids` for
these fields, but it's harder to read. Under the hood, the XBlock
API indeed uses `.scope_ids`:
https://github.com/openedx/XBlock/blob/v5.3.0/xblock/core.py#L422-L446

Part of: openedx/xblocks-contrib#125
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants