]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
temporary check for unmapped class, until [ticket:1142] is resolved
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 17 Aug 2008 21:55:00 +0000 (21:55 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 17 Aug 2008 21:55:00 +0000 (21:55 +0000)
lib/sqlalchemy/orm/properties.py
lib/sqlalchemy/orm/util.py
test/orm/mapper.py

index 4056c2ff91871bc34b3ea8cd4554e76ad3c5fe40..ebe61b19e28b070695846258fe9006c3e38d8898 100644 (file)
@@ -530,7 +530,9 @@ class PropertyLoader(StrategizedProperty):
             self.mapper = mapper.class_mapper(self.argument(), compile=False)
         else:
             raise sa_exc.ArgumentError("relation '%s' expects a class or a mapper argument (received: %s)" % (self.key, type(self.argument)))
-        assert isinstance(self.mapper, mapper.Mapper), self.mapper
+
+        # TODO: an informative assertion ?
+        assert isinstance(self.mapper, mapper.Mapper)
 
         # accept callables for other attributes which may require deferred initialization
         for attr in ('order_by', 'primaryjoin', 'secondaryjoin', 'secondary', '_foreign_keys', 'remote_side'):
index 928b38fd3f6679273cc5f663d8923293cb1ebd9c..4915d930d657e294d533b1919191e7ce3502d418 100644 (file)
@@ -464,6 +464,11 @@ def class_mapper(class_, compile=True, raiseerror=True):
     try:
         class_manager = attributes.manager_of_class(class_)
         mapper = class_manager.mapper
+        
+        # HACK until [ticket:1142] is complete
+        if mapper is None:
+            raise exc.NO_STATE
+            
     except exc.NO_STATE:
         if not raiseerror:
             return
index 73afd3b9987f731246882f3c1002efedf2d844a8..57bcba20cefc5c88423fd03a01767fad001f6586 100644 (file)
@@ -834,6 +834,17 @@ class MapperTest(_fixtures.FixtureTest):
         create_session().query(User).first()
         eq_(recon, ['go'])
 
+    @testing.resolve_artifact_names
+    def test_unmapped_error(self):
+        mapper(Address, addresses)
+        sa.orm.clear_mappers()
+        
+        mapper(User, users, properties={
+            'addresses':relation(Address)
+        })
+
+        self.assertRaises(sa.orm.exc.UnmappedClassError, sa.orm.compile_mappers)
+        
 class OptionsTest(_fixtures.FixtureTest):
 
     @testing.fails_on('maxdb')