| 631 | |
| 632 | |
| 633 | class _SaveUpdateAll(_PostSortRec): |
| 634 | __slots__ = ("mapper", "sort_key") |
| 635 | |
| 636 | def __init__(self, uow, mapper): |
| 637 | self.mapper = mapper |
| 638 | self.sort_key = ("SaveUpdateAll", mapper._sort_key) |
| 639 | assert mapper is mapper.base_mapper |
| 640 | |
| 641 | @util.preload_module("sqlalchemy.orm.persistence") |
| 642 | def execute(self, uow): |
| 643 | util.preloaded.orm_persistence._save_obj( |
| 644 | self.mapper, |
| 645 | uow.states_for_mapper_hierarchy(self.mapper, False, False), |
| 646 | uow, |
| 647 | ) |
| 648 | |
| 649 | def per_state_flush_actions(self, uow): |
| 650 | states = list( |
| 651 | uow.states_for_mapper_hierarchy(self.mapper, False, False) |
| 652 | ) |
| 653 | base_mapper = self.mapper.base_mapper |
| 654 | delete_all = _DeleteAll(uow, base_mapper) |
| 655 | for state in states: |
| 656 | # keep saves before deletes - |
| 657 | # this ensures 'row switch' operations work |
| 658 | action = _SaveUpdateState(uow, state) |
| 659 | uow.dependencies.add((action, delete_all)) |
| 660 | yield action |
| 661 | |
| 662 | for dep in uow.deps[self.mapper]: |
| 663 | states_for_prop = uow.filter_states_for_dep(dep, states) |
| 664 | dep.per_state_flush_actions(uow, states_for_prop, False) |
| 665 | |
| 666 | def __repr__(self): |
| 667 | return "%s(%s)" % (self.__class__.__name__, self.mapper) |
| 668 | |
| 669 | |
| 670 | class _DeleteAll(_PostSortRec): |
no outgoing calls
no test coverage detected