Skip to content

refactor: Simplify backcompat definitions for url_name, et al#37845

Open
kdmccormick wants to merge 1 commit intomasterfrom
kdmccormick/url-name
Open

refactor: Simplify backcompat definitions for url_name, et al#37845
kdmccormick wants to merge 1 commit intomasterfrom
kdmccormick/url-name

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
@kdmccormick
Copy link
Member Author

@farhan , could you please review this, and then incorporate it into openedx/xblocks-contrib#128 ?

@farhan
Copy link
Contributor

farhan commented Feb 24, 2026

@farhan , could you please review this, and then incorporate it into openedx/xblocks-contrib#128 ?

Sure, I will, added in the queue

@farhan farhan moved this to 👀 In review in Aximprovements Team Feb 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 👀 In review

Development

Successfully merging this pull request may close these issues.

2 participants