mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-06-01 05:18:44 -04:00
- used a metaclass trick to get Session.bind / Session.<someprop> to work
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -750,7 +750,7 @@ class OneToManyTest(UnitOfWorkTest):
|
||||
Session.commit()
|
||||
Session.delete(u)
|
||||
Session.commit()
|
||||
self.assert_(a.address_id is not None and a.user_id is None and not Session().identity_map.has_key(u._instance_key) and Session().identity_map.has_key(a._instance_key))
|
||||
self.assert_(a.address_id is not None and a.user_id is None and not Session.identity_map.has_key(u._instance_key) and Session.identity_map.has_key(a._instance_key))
|
||||
|
||||
def testonetoone(self):
|
||||
m = mapper(User, users, properties = dict(
|
||||
@@ -867,7 +867,7 @@ class SaveTest(UnitOfWorkTest):
|
||||
# change first users name and save
|
||||
Session.update(u)
|
||||
u.user_name = 'modifiedname'
|
||||
assert u in Session().dirty
|
||||
assert u in Session.dirty
|
||||
Session.commit()
|
||||
|
||||
# select both
|
||||
|
||||
Reference in New Issue
Block a user