manager = attributes.manager_of_class(self.class_)
if self.non_primary:
- if not manager or manager.mapper is None:
+ if not manager or not manager.is_mapped:
raise sa_exc.InvalidRequestError(
"Class %s has no primary mapper configured. Configure "
"a primary mapper first before setting up a non primary "
if manager is not None:
assert manager.class_ is self.class_
- if manager.mapper:
+ if manager.is_mapped:
raise sa_exc.ArgumentError(
"Class '%s' already has a primary mapper defined. "
"Use non_primary=True to "
if hasattr(self, '_compile_failed'):
del self._compile_failed
- if not self.non_primary and self.class_manager.mapper is self:
+ if not self.non_primary and \
+ self.class_manager.is_mapped and \
+ self.class_manager.mapper is self:
attributes.unregister_class(self.class_)
def _configure_pks(self):
"""
try:
state = attributes.instance_state(instance)
- if not state.manager.mapper:
- raise exc.UnmappedInstanceError(instance)
return state.manager.mapper
+ except exc.UnmappedClassError:
+ raise exc.UnmappedInstanceError(instance)
except exc.NO_STATE:
raise exc.UnmappedInstanceError(instance)
Raises UnmappedClassError if no mapping is configured.
"""
+
try:
class_manager = attributes.manager_of_class(class_)
mapper = class_manager.mapper
- # HACK until [ticket:1142] is complete
- if mapper is None:
- raise AttributeError
-
except exc.NO_STATE:
raise exc.UnmappedClassError(class_)
def test_illegal_non_primary(self):
mapper(User, users)
mapper(Address, addresses)
- try:
+ assert_raises_message(
+ sa.exc.ArgumentError,
+ "Attempting to assign a new relationship 'addresses' "
+ "to a non-primary mapper on class 'User'",
mapper(User, users, non_primary=True, properties={
'addresses':relationship(Address)
- }).compile()
- assert False
- except sa.exc.ArgumentError, e:
- assert "Attempting to assign a new relationship 'addresses' to a non-primary mapper on class 'User'" in str(e)
+ }).compile
+ )
@testing.resolve_artifact_names
def test_illegal_non_primary_2(self):
- try:
- mapper(User, users, non_primary=True)
- assert False
- except sa.exc.InvalidRequestError, e:
- assert "Configure a primary mapper first" in str(e)
+ assert_raises_message(
+ sa.exc.InvalidRequestError,
+ "Configure a primary mapper first",
+ mapper, User, users, non_primary=True)
+
+ @testing.resolve_artifact_names
+ def test_illegal_non_primary_3(self):
+ class Base(object):
+ pass
+ class Sub(Base):
+ pass
+ mapper(Base, users)
+ assert_raises_message(sa.exc.InvalidRequestError,
+ "Configure a primary mapper first",
+ mapper, Sub, addresses, non_primary=True
+ )
@testing.resolve_artifact_names
def test_prop_filters(self):
t = Table('person', MetaData(),
- Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
Column('type', String(128)),
Column('name', String(128)),
Column('employee_number', Integer),
assert_raises(sa.orm.exc.UnmappedClassError, sa.orm.compile_mappers)
+ @testing.resolve_artifact_names
+ def test_unmapped_subclass_error(self):
+ class Base(object):
+ pass
+ class Sub(Base):
+ pass
+
+ mapper(Base, users)
+ sa.orm.compile_mappers()
+ assert_raises(sa.orm.exc.UnmappedClassError,
+ create_session().add, Sub())
+
+
@testing.resolve_artifact_names
def test_oldstyle_mixin(self):
class OldStyle: