diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-08-02 01:18:42 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-08-02 01:18:42 +0000 |
commit | 11b294d1d2114ecf51453697e87f9c7ce8fedc38 (patch) | |
tree | 8b4bebcd37285eb1f4f56eed99b80c2c99448c96 /lib/sqlalchemy/orm/sessionmaker.py | |
parent | 23140c926be37eba0c0e3eecfb885b54ca2e41c5 (diff) | |
download | sqlalchemy-11b294d1d2114ecf51453697e87f9c7ce8fedc38.tar.gz |
- used a metaclass trick to get Session.bind / Session.<someprop> to work
Diffstat (limited to 'lib/sqlalchemy/orm/sessionmaker.py')
-rw-r--r-- | lib/sqlalchemy/orm/sessionmaker.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/sqlalchemy/orm/sessionmaker.py b/lib/sqlalchemy/orm/sessionmaker.py index 42064c5b8..adf80f9a7 100644 --- a/lib/sqlalchemy/orm/sessionmaker.py +++ b/lib/sqlalchemy/orm/sessionmaker.py @@ -65,7 +65,20 @@ def sessionmaker(autoflush, transactional, bind=None, scope=None, enhance_classe global_extensions.append(SessionContextExt()) default_scope=scope + + class ScopedProps(type): + pass + def makeprop(name): + def set(self, attr): + setattr(registry(), name, attr) + def get(self): + return getattr(registry(), name) + return property(get, set) + for prop in ('bind', 'dirty', 'identity_map'): + setattr(ScopedProps, prop, makeprop(prop)) + class ScopedSess(Sess): + __metaclass__ = ScopedProps def __new__(cls, **kwargs): if len(kwargs): scope = kwargs.pop('scope', default_scope) |