MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / presort_saves

Method presort_saves

lib/sqlalchemy/orm/dependency.py:470–536  ·  view source on GitHub ↗
(self, uowcommit, states)

Source from the content-addressed store, hash-verified

468 )
469
470 def presort_saves(self, uowcommit, states):
471 children_added = uowcommit.memo(("children_added", self), set)
472
473 should_null_fks = (
474 not self.cascade.delete_orphan
475 and not self.passive_deletes == "all"
476 )
477
478 for state in states:
479 pks_changed = self._pks_changed(uowcommit, state)
480
481 if not pks_changed or self.passive_updates:
482 passive = (
483 attributes.PASSIVE_NO_INITIALIZE
484 | attributes.INCLUDE_PENDING_MUTATIONS
485 )
486 else:
487 passive = (
488 attributes.PASSIVE_OFF
489 | attributes.INCLUDE_PENDING_MUTATIONS
490 )
491
492 history = uowcommit.get_attribute_history(state, self.key, passive)
493 if history:
494 for child in history.added:
495 if child is not None:
496 uowcommit.register_object(
497 child,
498 cancel_delete=True,
499 operation="add",
500 prop=self.prop,
501 )
502
503 children_added.update(history.added)
504
505 for child in history.deleted:
506 if not self.cascade.delete_orphan:
507 if should_null_fks:
508 uowcommit.register_object(
509 child,
510 isdelete=False,
511 operation="delete",
512 prop=self.prop,
513 )
514 elif self.hasparent(child) is False:
515 uowcommit.register_object(
516 child,
517 isdelete=True,
518 operation="delete",
519 prop=self.prop,
520 )
521 for c, m, st_, dct_ in self.mapper.cascade_iterator(
522 "delete", child
523 ):
524 uowcommit.register_object(st_, isdelete=True)
525
526 if pks_changed:
527 if history:

Callers 1

executeMethod · 0.45

Calls 7

_pks_changedMethod · 0.95
get_attribute_historyMethod · 0.80
register_objectMethod · 0.80
memoMethod · 0.45
updateMethod · 0.45
hasparentMethod · 0.45
cascade_iteratorMethod · 0.45

Tested by

no test coverage detected