from datetime import datetime from turbogears import database as db from sqlalchemy import Table, Column, ForeignKey from sqlalchemy.orm import relation from sqlalchemy.types import * import id from util import * __all__ = [] visits_table = Table('visit', db.metadata, Column('visit_key', String(40), primary_key=True), Column('created', DateTime, nullable=False, default=datetime.now), Column('expiry', DateTime) ) visit_identity_table = Table('visit_identity', db.metadata, Column('visit_key', String(40), primary_key=True), Column('user_id', Integer, ForeignKey('tg_user.user_id'), index=True) ) groups_table = Table('tg_group', db.metadata, Column('group_id', Integer, primary_key=True), Column('group_name', Unicode(40), unique=True), Column('display_name', Unicode(255)), Column('created', DateTime, default=datetime.now) ) users_table = Table('tg_user', db.metadata, Column('user_id', Integer, primary_key=True), Column('user_name', Unicode(16), unique=True), Column('email_address', Unicode(255), unique=True), Column('display_name', Unicode(255)), Column('password', Unicode(40)), Column('created', DateTime, default=datetime.now) ) permissions_table = Table('permission', db.metadata, Column('permission_id', Integer, primary_key=True), Column('permission_name', Unicode(40), unique=True), Column('description', Unicode(255)) ) user_group_table = Table('user_group', db.metadata, Column('user_id', Integer, ForeignKey('tg_user.user_id', onupdate='CASCADE', ondelete='CASCADE')), Column('group_id', Integer, ForeignKey('tg_group.group_id', onupdate='CASCADE', ondelete='CASCADE')) ) group_permission_table = Table('group_permission', db.metadata, Column('group_id', Integer, ForeignKey('tg_group.group_id', onupdate='CASCADE', ondelete='CASCADE')), Column('permission_id', Integer, ForeignKey('permission.permission_id', onupdate='CASCADE', ondelete='CASCADE')) ) # set up mappers between identity tables and classes map_table(id.Visit, visits_table) map_table(id.VisitIdentity, visit_identity_table, properties=dict( users=relation(id.User, backref='visit_identity') )) map_table(id.User, users_table, properties=dict( _password=users_table.c.password )) map_table(id.Group, groups_table, properties=dict( users=relation(id.User, secondary=user_group_table, backref='groups') )) map_table(id.Permission, permissions_table, properties=dict( groups=relation(id.Group, secondary=group_permission_table, backref='permissions') ))