summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/ext/activemapper.py27
-rw-r--r--lib/sqlalchemy/mods/threadlocal.py16
2 files changed, 21 insertions, 22 deletions
diff --git a/lib/sqlalchemy/ext/activemapper.py b/lib/sqlalchemy/ext/activemapper.py
index 6c6886c66..d21332e3a 100644
--- a/lib/sqlalchemy/ext/activemapper.py
+++ b/lib/sqlalchemy/ext/activemapper.py
@@ -6,6 +6,7 @@ from sqlalchemy import Table, Column, ForeignKey
from sqlalchemy.ext.sessioncontext import SessionContext
from sqlalchemy.ext.assignmapper import assign_mapper
from sqlalchemy import backref as create_backref
+import sqlalchemy
import inspect
import sys
@@ -15,18 +16,16 @@ import sys
#
metadata = DynamicMetaData("activemapper")
-#
-# thread local SessionContext
-#
-class Objectstore(object):
-
- def __init__(self, *args, **kwargs):
- self._context = SessionContext(*args, **kwargs)
-
- def __getattr__(self, name):
- return getattr(self._context.current, name)
-
-objectstore = Objectstore(create_session)
+try:
+ objectstore = sqlalchemy.objectstore
+except AttributeError:
+ # thread local SessionContext
+ class Objectstore(object):
+ def __init__(self, *args, **kwargs):
+ self.context = SessionContext(*args, **kwargs)
+ def __getattr__(self, name):
+ return getattr(self.context.current, name)
+ objectstore = Objectstore(create_session)
#
@@ -237,10 +236,10 @@ class ActiveMapperMeta(type):
# check for inheritence
if hasattr(bases[0], "mapping"):
cls._base_mapper= bases[0].mapper
- assign_mapper(objectstore._context, cls, cls.table,
+ assign_mapper(objectstore.context, cls, cls.table,
inherits=cls._base_mapper)
else:
- assign_mapper(objectstore._context, cls, cls.table)
+ assign_mapper(objectstore.context, cls, cls.table)
cls.relations = relations
ActiveMapperMeta.classes[clsname] = cls
diff --git a/lib/sqlalchemy/mods/threadlocal.py b/lib/sqlalchemy/mods/threadlocal.py
index f96bb5649..760a37e81 100644
--- a/lib/sqlalchemy/mods/threadlocal.py
+++ b/lib/sqlalchemy/mods/threadlocal.py
@@ -22,24 +22,24 @@ while this mod is installed will reference this global context when creating new
__all__ = ['Objectstore', 'assign_mapper']
-class Objectstore(SessionContext):
- def __getattr__(self, key):
- return getattr(self.current, key)
- def get_session(self):
- return self.current
+class Objectstore(object):
+ def __init__(self, *args, **kwargs):
+ self.context = SessionContext(*args, **kwargs)
+ def __getattr__(self, name):
+ return getattr(self.context.current, name)
def assign_mapper(class_, *args, **kwargs):
- assignmapper.assign_mapper(objectstore, class_, *args, **kwargs)
+ assignmapper.assign_mapper(objectstore.context, class_, *args, **kwargs)
objectstore = Objectstore(Session)
def install_plugin():
sqlalchemy.objectstore = objectstore
- global_extensions.append(objectstore.mapper_extension)
+ global_extensions.append(objectstore.context.mapper_extension)
engine.default_strategy = 'threadlocal'
sqlalchemy.assign_mapper = assign_mapper
def uninstall_plugin():
engine.default_strategy = 'plain'
- global_extensions.remove(objectstore.mapper_extension)
+ global_extensions.remove(objectstore.context.mapper_extension)
install_plugin()