diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-08-17 21:55:00 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-08-17 21:55:00 +0000 |
| commit | 9b6a9b7aeab79ba28737f394fa6cfaaf1f1f1bcf (patch) | |
| tree | 83505f572e626cb8985aa6a79943eea465692196 | |
| parent | dd9d9bd9be50fd5e64da43cbfeb088593baee103 (diff) | |
| download | sqlalchemy-9b6a9b7aeab79ba28737f394fa6cfaaf1f1f1bcf.tar.gz | |
temporary check for unmapped class, until [ticket:1142] is resolved
| -rw-r--r-- | lib/sqlalchemy/orm/properties.py | 4 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/util.py | 5 | ||||
| -rw-r--r-- | test/orm/mapper.py | 11 |
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') |
