summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-08-17 21:55:00 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-08-17 21:55:00 +0000
commit9b6a9b7aeab79ba28737f394fa6cfaaf1f1f1bcf (patch)
tree83505f572e626cb8985aa6a79943eea465692196
parentdd9d9bd9be50fd5e64da43cbfeb088593baee103 (diff)
downloadsqlalchemy-9b6a9b7aeab79ba28737f394fa6cfaaf1f1f1bcf.tar.gz
temporary check for unmapped class, until [ticket:1142] is resolved
-rw-r--r--lib/sqlalchemy/orm/properties.py4
-rw-r--r--lib/sqlalchemy/orm/util.py5
-rw-r--r--test/orm/mapper.py11
3 files changed, 19 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py
index 4056c2ff9..ebe61b19e 100644
--- a/lib/sqlalchemy/orm/properties.py
+++ b/lib/sqlalchemy/orm/properties.py
@@ -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'):
diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py
index 928b38fd3..4915d930d 100644
--- a/lib/sqlalchemy/orm/util.py
+++ b/lib/sqlalchemy/orm/util.py
@@ -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
diff --git a/test/orm/mapper.py b/test/orm/mapper.py
index 73afd3b99..57bcba20c 100644
--- a/test/orm/mapper.py
+++ b/test/orm/mapper.py
@@ -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')