better handling
Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/1e798b5c Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/1e798b5c Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/1e798b5c Branch: refs/heads/ARIA-213-Sporadic-tests-failures-over-locked-database-issue Commit: 1e798b5c9d591f39aad6c8a20528839911b7e5b6 Parents: f523dfb Author: max-orlov <[email protected]> Authored: Wed May 10 19:27:40 2017 +0300 Committer: max-orlov <[email protected]> Committed: Thu May 11 14:28:49 2017 +0300 ---------------------------------------------------------------------- aria/storage/instrumentation.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/1e798b5c/aria/storage/instrumentation.py ---------------------------------------------------------------------- diff --git a/aria/storage/instrumentation.py b/aria/storage/instrumentation.py index b1e9cd7..b0738c8 100644 --- a/aria/storage/instrumentation.py +++ b/aria/storage/instrumentation.py @@ -102,13 +102,11 @@ class _Instrumentation(object): session.expunge(instance) tracked_instances = self.new_instances.setdefault(instance.__modelname__, {}) tracked_attributes = tracked_instances.setdefault(self._new_instance_id, {}) - # TODO: we need a better way to get all of the attributes - tracked_attributes.update(execution_fk=instance.execution_fk, - task_fk=instance.task_fk, - **instance.to_dict()) - listener_args = (getattr(ctx.model, instrumented_class.__tablename__)._session, - 'after_attach', - listener) + instance_as_dict = instance.to_dict() + instance_as_dict.update((k, getattr(instance, k)) for k in instance.__private_fields__) + tracked_attributes.update(instance_as_dict) + session = getattr(ctx.model, instrumented_class.__tablename__)._session + listener_args = (session, 'after_attach', listener) sqlalchemy.event.listen(*listener_args) self.listeners.append(listener_args)
