For anybody following this thread (?)... I'm giving up on this for
now and using straight SA code. (the code I posted previously does
not work correctly upon further investigation... in particular:
selecting from Person returns everything as Person objects instead of
what they should be.)
(I spent too much time on it already, so I'll just wait to hear what
happens with the collaboration between ActiveMapper and TurboEntity
and maybe re-write it then...)
For anybody wanting an example, here's what I have that seems to work
correctly now:
------ model.py ----------:
from datetime import datetime
from sqlalchemy import *
from sqlalchemy.ext.assignmapper import assign_mapper
from turbogears.database import metadata, session
people = Table('people', metadata,
Column('person_id', Integer, primary_key=True),
Column('name', Unicode(50)),
Column('type', String(30)),
)
jerks = Table('jerks', metadata,
Column('person_id', Integer, ForeignKey('people.person_id'),
primary_key=True),
Column('smelly', Boolean),
)
sweeties = Table('sweeties', metadata,
Column('person_id', Integer, ForeignKey('people.person_id'),
primary_key=True),
Column('extra_nice', Boolean)
)
class Person(object):
def __init__(self, **kwargs):
for key, value in kwargs.iteritems():
setattr(self, key, value)
class Jerk(Person):
pass
class Sweetie(Person):
pass
people_join = polymorphic_union(
{ 'jerk' : people.join(jerks),
'sweetie' : people.join(sweeties),
'person' : people.select(people.c.type == 'person'),
}, None, 'pjoin'
)
person_mapper = assign_mapper(session.context, Person, people)
person_mapper.select_table=people_join
person_mapper.polymorphic_on=people_join.c.type
person_mapper.polymorphic_identity='person'
jerk_mapper = assign_mapper(session.context, Jerk, jerks)
jerk_mapper.inherits=person_mapper
jerk_mapper.polymorphic_identity='jerk'
sweetie_mapper = assign_mapper(session.context, Sweetie, sweeties)
sweetie_mapper.inherits=person_mapper
sweetie_mapper.polymorphic_identity='sweetie'
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---