| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
Thanks for the pull request, @bradenmacdonald! This repository is currently maintained by @openedx/wg-maintenance-openedx-platform. Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
To help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
If one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information? If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources:
Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
Sorry, something went wrong.
Deleting the draft version of a published component used in a published container would result in an error when LibraryXBlockMetadata tries to get info about the draft version.
| def get_container_children_list( | ||
| container_key: LibraryContainerLocator, *, | ||
| published: bool, | ||
| ) -> list[ContainerChildMetadata]: | ||
| """ | ||
| [ 🛑 UNSTABLE ] Get the entities contained in the given container (e.g. the | ||
| components/xblocks in a unit, units in a subsection, subsections in a section) | ||
|
|
||
| Returns a list of ``ContainerChildMetadata`` objects (which give only each | ||
| child's display name and opaque key, though the opaque key also includes | ||
| information on what "type" of component/container it is). | ||
| """ |
There was a problem hiding this comment.
Adding a new API method here is not strictly necessary for this fix, but because this new get_container_children_list API method is much simpler and faster than get_container, it makes the search index update both faster and more robust, so I think it's the best fix.
(get_container does a lot more work / fetches a lot more data per child, hence is slower and it potentially more fragile.)
Sorry, something went wrong.
|
@ormsbee Thanks for all the reviews. Could you please take a look at this one too? It's the last fix needed. |
Sorry, something went wrong.
| empty_unit_key = LibraryContainerLocator.from_string(self.unit["id"]) | ||
| unit_with_children_key = LibraryContainerLocator.from_string(self.unit_with_components["id"]) | ||
| EMPTY_QUERIES = 6 | ||
| PER_CHILD_QUERIES = 10 # There's room to optimize here. |
There was a problem hiding this comment.
Ouch. 😞
Sorry, something went wrong.
|
Sorry, I thought I had gotten them all. Thank you! |
Sorry, something went wrong.
* fix: ValidationError when trying to add components to a collection (#38579) * fix: don't sleep for a half second every time we update meilisearch (#38576) * fix: various issues with modulestore migrator and content library events (#38508) * fix: update modulestore migrator to not publish in draft context * fix: use correct date/user info for modulestore migrator * fix: allow our event handling tasks to call subtasks * fix: better handling of deletion/un-deletion using openedx-core fixes * fix: exception raised when mass-deleting all items in a content library (ContentLibraryBlockNotFound was being raised and not caught, propagating up to celery task error) * fix: don't update the 'collections' field of deleted entities when modifying a collection * fix: keep collection "# of entities" count updated when entities deleted * refactor: use LIBRARY_COLLECTION_UPDATED event to update collections on entity (un)delete * fix: unable to delete "ghost" component in library if it exists but has no draft * fix: error when deleting lib component used in a container (#38607) * fix: bump openedx-core to v1.0.2 --------- Co-authored-by: Claude <noreply@anthropic.com>
| Back | FazBrowse Home | New Git URL |
Description
Fixes openedx/frontend-app-authoring#3051
Deleting the draft version of a published component used in a published container would result in an error when LibraryXBlockMetadata tries to get info about the draft version.
# Event: LIBRARY_BLOCK_DELETED 2026-05-07 00:18:03,180 INFO 1088 [openedx.core.djangoapps.content.search.tasks:157] - Updating content index documents for container lct:OpenCraftX:MTL3:unit:conclusion in librarylib:OpenCraftX:MTL3 2026-05-07 00:18:03,268 ERROR 1088 [celery_utils.logged_task:48] - failed due to Traceback (most recent call last): File "/openedx/edx-platform/openedx/core/djangoapps/content/search/tasks.py", line 159, in update_library_container_index_doc api.upsert_library_container_index_doc(container_key) File "/openedx/edx-platform/openedx/core/djangoapps/content/search/api.py", line 999, in upsert_library_container_index_doc """ File "/openedx/edx-platform/openedx/core/djangoapps/content/search/documents.py", line 675, in searchable_doc_for_container published_children = lib_api.get_container_children( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/openedx/edx-platform/openedx/core/djangoapps/content_libraries/api/containers.py", line 214, in get_container_children result.append(LibraryXBlockMetadata.from_component(container_key.lib_key, entry.entity.component)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/openedx/edx-platform/openedx/core/djangoapps/content_libraries/api/block_metadata.py", line 70, in from_component display_name=draft.title, ^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'title'Testing instructions