That makes good sense. I needed to add UsersFromDatabase.update_model
(self, model) in my own update_model function for things to work.
I had difficulty working out how to map a many-to-many relation
between my Email class and the User class because I can't add
relations in a secondary mapper. I got around that by using a
backref.
Thanks,
Paul
My model/__init.py:
from sqlalchemy import *
from sqlalchemy.orm import *
from myproj.model import meta
from authkit.users.sqlalchemy_driver.sqlalchemy_05 import
UsersFromDatabase
import sys
def init_model(engine):
sm = sessionmaker(autoflush=True, autocommit=False, bind=engine)
meta.engine = engine
meta.Session = scoped_session(sm)
class MyUsersFromDatabase(UsersFromDatabase):
def update_model(self, model):
UsersFromDatabase.update_model(self, model)
metadata = meta.metadata
class Email(object):
def __init__(self, name=None):
self.name = name
def __repr__(self):
return "Email(%(name)s)" % self.__dict__
emails_table = Table(
"emails", metadata,
Column("uid", Integer, primary_key=True),
Column("email", String(255), unique=True, nullable=False),
)
users_emails_table = Table(
"users_emails",
metadata,
Column("user_uid", Integer, ForeignKey("users.uid")),
Column("email_uid", Integer, ForeignKey("emails.uid")),
)
mapper(
Email,
emails_table,
properties={
"users": relation(User, lazy=True,
secondary=users_emails_table, backref='email'),
}
)
model.Email = Email
return model
> >
http://pylonsbook.com/en/1.1/simplesite-tutorial-part-3.html#authenti...
> >
p...@nesbit.net <mailto:
p...@nesbit.net> |
416.642.6920 | paul.nesbit