On 18 February 2011 11:34, Abdul Gaffar <[email protected]> wrote:
> If anybody can give the complete example of User, Group, permission,
> Project table with the association table, that should work with repoze
> authentication and authorization framework.
>
> User table sholud contain
> ---------------
> user_id,
> user_name,
> email_address
>
> Group table should contain
> --------------------------
> group_id
> group_name
>
> Permission
> ----------
> permission_id
> permission_name
>
> Project_table
> -------------
> project_id
> project_name
>
> and the association table should contain
> ----------------------------------------
> user_id
> group_id
> project_id
> --------------------------------------------------------
Hi
I would do it like this (SA07):
engine = create_engine('sqlite://')
meta = MetaData(bind=engine)
Session = sessionmaker(bind=engine)
Base = declarative_base(metadata=meta)
def project_creator(tup):
return GroupProject(project=tup[0], group=tup[1])
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
projects = association_proxy('group_projects', 'project',
creator=project_creator)
class Group(Base):
__tablename__ = 'groups'
id = Column(Integer, primary_key=True)
class Project(Base):
__tablename__ = 'projects'
id = Column(Integer, primary_key=True)
class GroupProject(Base):
__tablename__ = 'group_projects'
_group_id = Column(Integer, ForeignKey('groups.id'),
primary_key=True)
_project_id = Column(Integer, ForeignKey('projects.id'),
primary_key=True)
_user_id = Column(Integer, ForeignKey('users.id'),
primary_key=True)
group = relationship('Group', uselist=False,
backref='group_projects')
project = relationship('Project', uselist=False,
backref='group_projects')
user = relationship('User', uselist=False,
backref='group_projects')
meta.drop_all()
meta.create_all()
s = Session()
p = Project()
g = Group()
u = User()
s.add_all([u,g,p])
u.projects.append((p, g))
s.flush()
assert u.projects[0] == p
gp = s.query(GroupProject).one()
assert gp.user == u
assert gp.group == g
assert gp.project == p
btw. your permission table has no meaning in your example.
Greez,
Florian
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" 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/sqlalchemy?hl=en.