Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Save with cascade=True fix for unsaved child documents #2605

Open
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

nickfrev
Copy link

A fix for #1236

Moved the cascade save portion of the Document.save method above the validation check. This does mean that there is a possibility that a child document could be saved while the parent document is not valid for another reason but this would already occur anyway with the current work arounds to this issue.

This move also removed this code block from the try-catch statement however all errors should be being caught by Document.cascade_save anyway.

@nickfrev nickfrev changed the title Save with cascade fix for unsaved child documents Save with cascade=True fix for unsaved child documents Dec 17, 2021
- Created a new base field (SaveableBaseField) which allows a field to marked as savable during a cascade save.
- Each SaveableBaseField defines a save method which describes how it will deal with a cascade save call this allows lists, dicts, and maps to be effected during a cascade save.
- Added an _is_saving flag during Document save to avoid saving a document that is already in the process of being saved. (Caused if there is a circular reference.)
- Allows for users to cascade save unsaved documents even if a cycle exists.
@nickfrev
Copy link
Author

nickfrev commented Jan 7, 2022

This Pull request is a subset of a larger pull request which include more issue fixes and features:
#2615
If that pull request gets approved this one will be closed.

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.

None yet

1 participant