dict_[name]=column_copies[obj]=obj.copy()
mapper_args = mapper_args or getattr(base,'__mapper_args__',mapper_args)
table_args = table_args or getattr(base,'__table_args__',None)
+ tablename = getattr(base,'__tablename__',None)
+ if tablename:
+ dict_['__tablename__']=tablename
# make sure that column copies are used rather than the original columns
# from any mixins
eq_(obj.foo(),'bar1')
eq_(obj.baz,'fu')
+ def test_table_name_inherited(self):
+
+ class MyMixin:
+ @classproperty
+ def __tablename__(cls):
+ return cls.__name__.lower()
+ id = Column(Integer, primary_key=True)
+
+ class MyModel(Base,MyMixin):
+ pass
+
+ eq_(MyModel.__table__.name,'mymodel')
+
+ def test_table_name_not_inherited(self):
+
+ class MyMixin:
+ @classproperty
+ def __tablename__(cls):
+ return cls.__name__.lower()
+ id = Column(Integer, primary_key=True)
+
+ class MyModel(Base,MyMixin):
+ __tablename__ = 'overridden'
+
+ eq_(MyModel.__table__.name,'overridden')
+
+ def test_table_name_inheritance_order(self):
+
+ class MyMixin1:
+ @classproperty
+ def __tablename__(cls):
+ return cls.__name__.lower()+'1'
+
+ class MyMixin2:
+ @classproperty
+ def __tablename__(cls):
+ return cls.__name__.lower()+'2'
+
+ class MyModel(Base,MyMixin1,MyMixin2):
+ id = Column(Integer, primary_key=True)
+
+ eq_(MyModel.__table__.name,'mymodel1')
+
def test_table_args_inherited(self):
class MyMixin: