Esempio n. 1
0
    def per_property_dependencies(
        self,
        uow,
        parent_saves,
        child_saves,
        parent_deletes,
        child_deletes,
        after_save,
        before_delete,
    ):
        if self.post_update:
            child_post_updates = unitofwork.IssuePostUpdate(
                uow, self.mapper.primary_base_mapper, False)
            child_pre_updates = unitofwork.IssuePostUpdate(
                uow, self.mapper.primary_base_mapper, True)

            uow.dependencies.update([
                (child_saves, after_save),
                (parent_saves, after_save),
                (after_save, child_post_updates),
                (before_delete, child_pre_updates),
                (child_pre_updates, parent_deletes),
                (child_pre_updates, child_deletes),
            ])
        else:
            uow.dependencies.update([
                (parent_saves, after_save),
                (after_save, child_saves),
                (after_save, child_deletes),
                (child_saves, parent_deletes),
                (child_deletes, parent_deletes),
                (before_delete, child_saves),
                (before_delete, child_deletes),
            ])
Esempio n. 2
0
    def per_state_dependencies(self, uow,
                                    save_parent,
                                    delete_parent,
                                    child_action,
                                    after_save, before_delete,
                                    isdelete, childisdelete):

        if self.post_update:

            if not isdelete:
                parent_post_updates = unitofwork.IssuePostUpdate(
                                            uow,
                                            self.parent.primary_base_mapper,
                                            False)
                if childisdelete:
                    uow.dependencies.update([
                        (after_save, parent_post_updates),
                        (parent_post_updates, child_action)
                    ])
                else:
                    uow.dependencies.update([
                        (save_parent, after_save),
                        (child_action, after_save),

                        (after_save, parent_post_updates)
                    ])
            else:
                parent_pre_updates = unitofwork.IssuePostUpdate(
                                            uow,
                                            self.parent.primary_base_mapper,
                                            True)

                uow.dependencies.update([
                    (before_delete, parent_pre_updates),
                    (parent_pre_updates, delete_parent),
                    (parent_pre_updates, child_action)
                ])

        elif not isdelete:
            if not childisdelete:
                uow.dependencies.update([
                    (child_action, after_save),
                    (after_save, save_parent),
                ])
            else:
                uow.dependencies.update([
                    (after_save, save_parent),
                ])

        else:
            if childisdelete:
                uow.dependencies.update([
                    (delete_parent, child_action)
                ])
Esempio n. 3
0
    def per_state_dependencies(self, uow,
                                    save_parent,
                                    delete_parent,
                                    child_action,
                                    after_save, before_delete,
                                    isdelete, childisdelete):

        if self.post_update:

            child_post_updates = unitofwork.IssuePostUpdate(
                                            uow,
                                            self.mapper.primary_base_mapper,
                                            False)
            child_pre_updates = unitofwork.IssuePostUpdate(
                                            uow,
                                            self.mapper.primary_base_mapper,
                                            True)

            # TODO: this whole block is not covered
            # by any tests
            if not isdelete:
                if childisdelete:
                    uow.dependencies.update([
                        (child_action, after_save),
                        (after_save, child_post_updates),
                    ])
                else:
                    uow.dependencies.update([
                        (save_parent, after_save),
                        (child_action, after_save),
                        (after_save, child_post_updates),
                    ])
            else:
                if childisdelete:
                    uow.dependencies.update([
                        (before_delete, child_pre_updates),
                        (child_pre_updates, delete_parent),
                    ])
                else:
                    uow.dependencies.update([
                        (before_delete, child_pre_updates),
                        (child_pre_updates, delete_parent),
                    ])
        elif not isdelete:
            uow.dependencies.update([
                (save_parent, after_save),
                (after_save, child_action),
                (save_parent, child_action)
            ])
        else:
            uow.dependencies.update([
                (before_delete, child_action),
                (child_action, delete_parent)
            ])