fix(contentstore): guard downstream_customized copy on paste [FC-0123]#38457
Conversation
|
Thanks for the pull request, @navinkarkera! This repository is currently maintained by 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.
🔘 Provide contextTo 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:
🔘 Get a green buildIf 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: When can I expect my changes to be merged?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. |
a036362 to
0bfc8ca
Compare
| # may not have this attribute, but still have parsed downstream_customized field. | ||
| if hasattr(temp_xblock, 'xml_attributes'): | ||
| raw_downstream_customized = temp_xblock.xml_attributes.get("downstream_customized", []) | ||
| downstream_customized = raw_downstream_customized |
There was a problem hiding this comment.
Why has the use of json.loads been removed? If this value is a JSON string, we would be introducing a bug if we didn't use json.loads.
There was a problem hiding this comment.
You are right, it could be string as well. I'll update it.
Updated: 62bf50f
Handle blocks that do not expose xml_attributes during clipboard paste upstream-link setup. Read downstream_customized with safe fallback, only access xml_attributes when present, and only set downstream_customized when field exists on block instance. Prevents AttributeError when pasting blocks like DragAndDropBlockWithMixins.
d5f4fd7 to
62bf50f
Compare
ChrisChV
left a comment
There was a problem hiding this comment.
Looks good, thanks! 👍
- I tested this: I followed the testing instructions
- I read through the code and considered the security, stability and performance implications of the changes.
- I tested that the UI can be used with a keyboard only (tab order, keyboard controls).
- Includes tests for bugfixes and/or features added.
- Includes documentation
- Includes fixtures that create objects required for manual testing.
…#38457) Fix clipboard paste crash in upstream-link setup when pasted block does not expose `xml_attributes`. Before change, paste flow always read `temp_xblock.xml_attributes["downstream_customized"]`. Blocks like `DragAndDropBlockWithMixins` do not have `xml_attributes`, so Studio raised `AttributeError` and paste failed. Change now: - Read `downstream_customized` from parsed block field first (`getattr(temp_xblock, "downstream_customized", [])`). - Read `xml_attributes` only when block exposes it. - Set `downstream_customized` only when block has field.
Description
Fix clipboard paste crash in upstream-link setup when pasted block does not expose
xml_attributes.Before change, paste flow always read
temp_xblock.xml_attributes["downstream_customized"]. Blocks likeDragAndDropBlockWithMixinsdo not havexml_attributes, so Studio raisedAttributeErrorand paste failed.Change now:
downstream_customizedfrom parsed block field first (getattr(temp_xblock, "downstream_customized", [])).xml_attributesonly when block exposes it.downstream_customizedonly when block has field.Impact:
Supporting information
Private-ref: https://tasks.opencraft.com/browse/FAL-4331Testing instructions
Deadline
ASAP