]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Another old-style mixin fix and an explicit mapper() test for it.
authorJason Kirtland <jek@discorporate.us>
Thu, 21 Aug 2008 14:24:45 +0000 (14:24 +0000)
committerJason Kirtland <jek@discorporate.us>
Thu, 21 Aug 2008 14:24:45 +0000 (14:24 +0000)
lib/sqlalchemy/orm/attributes.py
test/orm/mapper.py

index d8f32d62531317fbe68a9215fab381abe2d257c6..ff6c7b02cee1b7c058fb82e97f11a82297c36529 100644 (file)
@@ -1044,6 +1044,8 @@ class ClassManager(dict):
         self.local_attrs = {}
         self.originals = {}
         for base in class_.__mro__[-2:0:-1]:   # reverse, skipping 1st and last
+            if not isinstance(base, type):
+                continue
             cls_state = manager_of_class(base)
             if cls_state:
                 self.update(cls_state)
index 57bcba20cefc5c88423fd03a01767fad001f6586..bcc75e40274a4f5948c3f5f5f952b158197b5469 100644 (file)
@@ -838,13 +838,31 @@ class MapperTest(_fixtures.FixtureTest):
     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)
-        
+
+    @testing.resolve_artifact_names
+    def test_oldstyle_mixin(self):
+        class OldStyle:
+            pass
+        class NewStyle(object):
+            pass
+
+        class A(NewStyle, OldStyle):
+            pass
+
+        mapper(A, users)
+
+        class B(OldStyle, NewStyle):
+            pass
+
+        mapper(B, users)
+
+
 class OptionsTest(_fixtures.FixtureTest):
 
     @testing.fails_on('maxdb')