well that's just a simple bug.  this fixes:

diff --git a/lib/sqlalchemy/ext/declarative/api.py 
b/lib/sqlalchemy/ext/declarative/api.py
index daf8bff..fe64ee7 100644
--- a/lib/sqlalchemy/ext/declarative/api.py
+++ b/lib/sqlalchemy/ext/declarative/api.py
@@ -396,7 +396,7 @@ class AbstractConcreteBase(ConcreteBase):
 
         for scls in cls.__subclasses__():
             sm = _mapper_or_none(scls)
-            if sm.concrete and cls in scls.__bases__:
+            if sm and sm.concrete and cls in scls.__bases__:
                 sm._set_concrete_base(m)
 

if you want to post a bug report, or send a PR + test, whatever, that would 
help...


for whatever reason this mapping is generating a crapload of warnings too.    
Oh, I think its because ConcreteBase hardcodes that name "type" in the 
"polymorphic join", if you change that col name to "type_foo" they go away.

the concrete base classes aren't very smooth (nor is concrete mapping 
overall...)




On Sep 4, 2014, at 9:37 PM, Alex Grönholm <alex.gronh...@nextday.fi> wrote:

> The following code fails with AttributeError: 'NoneType' object has no 
> attribute 'concrete':
> 
> from sqlalchemy import *
> from sqlalchemy.orm import *
> from sqlalchemy.ext.declarative import AbstractConcreteBase, declarative_base
> 
> Base = declarative_base()
> 
> 
> class Document(Base, AbstractConcreteBase):
>     type = Column(Unicode, nullable=False)
> 
> 
> class ContactDocument(Document):
>     __abstract__ = True
> 
>     send_method = Column('sendmethod', Unicode)
> 
> 
> class ActualDocument(ContactDocument):
>     __tablename__ = 'actual_documents'
>     __mapper_args__ = {'concrete': True, 'polymorphic_identity': 'actual'}
> 
>     id = Column(Integer, primary_key=True)
> 
> configure_mappers()
> 
> 
> Am I not supposed to have more than one level of abstract base classes? Or am 
> I doing something else wrong?
> This is with SQLAlchemy 0.9.7.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to