]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
some adjustments to activemapper's objectstore to be composed against SessionContext
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 1 Jul 2006 15:30:33 +0000 (15:30 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 1 Jul 2006 15:30:33 +0000 (15:30 +0000)
DynamicMetaData checks first for _engine before returning

CHANGES
lib/sqlalchemy/ext/activemapper.py
lib/sqlalchemy/schema.py

diff --git a/CHANGES b/CHANGES
index e87f9f4ef6a3131294d459faa1f0abe42e013111..a36de9ea636aedcca899615c88cd18263b10f3ce 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,7 @@ two mappers that referenced each other
 - upgraded all unittests to insert './lib/' into sys.path, 
 working around new setuptools PYTHONPATH-killing behavior
 - further fixes with attributes/dependencies/etc....
+- improved error handling for when DynamicMetaData is not connected
 
 0.2.4
 - try/except when the mapper sets init.__name__ on a mapped class,
index 541bf781274d0f98473b617f33e539abf552ce91..9fa1830311fe554531c19a915c3aa092174488bd 100644 (file)
@@ -19,11 +19,13 @@ metadata = DynamicMetaData("activemapper")
 #
 # thread local SessionContext
 #
-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)
 
 objectstore = Objectstore(create_session)
 
@@ -222,10 +224,10 @@ class ActiveMapperMeta(type):
             # check for inheritence
             if hasattr(bases[0], "mapping"):
                 cls._base_mapper= bases[0].mapper
-                assign_mapper(objectstore, cls, cls.table, 
+                assign_mapper(objectstore._context, cls, cls.table, 
                               inherits=cls._base_mapper)
             else:
-                assign_mapper(objectstore, cls, cls.table)
+                assign_mapper(objectstore._context, cls, cls.table)
             cls.relations = relations
             ActiveMapperMeta.classes[clsname] = cls
             
index 6878b9c89842c9de80b0b2925ec9419f1bae3262..1df2d30053f6da0dd3f661aab07fc2bb8814af4f 100644 (file)
@@ -710,12 +710,12 @@ class DynamicMetaData(MetaData):
                 self.__engines[engine_or_url] = engine_or_url
             self.context._engine = engine_or_url
     def is_bound(self):
-        return self.context._engine is not None
+        return hasattr(self.context, '_engine') and self.context._engine is not None
     def dispose(self):
         """disposes all Engines to which this DynamicMetaData has been connected."""
         for e in self.__engines.values():
             e.dispose()
-    engine=property(lambda s:s.context._engine)
+    engine=property(lambda s:hasattr(s.context, '_engine') and s.context._engine or None)
             
 class SchemaVisitor(sql.ClauseVisitor):
     """defines the visiting for SchemaItem objects"""