| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
| 6 |
|
| 7 |
|
| 8 |
|
| 9 |
visits_table = Table('visit', metadata,
|
| 10 |
Column('visit_key', String(40), primary_key=True),
|
| 11 |
Column('created', DateTime, nullable=False, default=datetime.now),
|
| 12 |
Column('expiry', DateTime)
|
| 13 |
)
|
| 14 |
|
| 15 |
visit_identity_table = Table('visit_identity', metadata,
|
| 16 |
Column('visit_key', String(40), primary_key=True),
|
| 17 |
Column('user_id', Integer, ForeignKey('tg_user.user_id'),
|
| 18 |
index=True)
|
| 19 |
)
|
| 20 |
|
| 21 |
groups_table = Table('tg_group', metadata,
|
| 22 |
Column('group_id', Integer, primary_key=True),
|
| 23 |
Column('group_name', Unicode(16), unique=True),
|
| 24 |
Column('display_name', Unicode(255)),
|
| 25 |
Column('created', DateTime, default=datetime.now)
|
| 26 |
)
|
| 27 |
|
| 28 |
users_table = Table('tg_user', metadata,
|
| 29 |
Column('user_id', Integer, primary_key=True),
|
| 30 |
Column('user_name', Unicode(16), unique=True),
|
| 31 |
Column('email_address', Unicode(255), unique=True),
|
| 32 |
Column('display_name', Unicode(255)),
|
| 33 |
Column('password', Unicode(40)),
|
| 34 |
Column('created', DateTime, default=datetime.now)
|
| 35 |
)
|
| 36 |
|
| 37 |
permissions_table = Table('permission', metadata,
|
| 38 |
Column('permission_id', Integer, primary_key=True),
|
| 39 |
Column('permission_name', Unicode(16), unique=True),
|
| 40 |
Column('description', Unicode(255))
|
| 41 |
)
|
| 42 |
|
| 43 |
user_group_table = Table('user_group', metadata,
|
| 44 |
Column('user_id', Integer, ForeignKey('tg_user.user_id')),
|
| 45 |
Column('group_id', Integer, ForeignKey('tg_group.group_id'))
|
| 46 |
)
|
| 47 |
|
| 48 |
group_permission_table = Table('group_permission', metadata,
|
| 49 |
Column('group_id', Integer, ForeignKey('tg_group.group_id')),
|
| 50 |
Column('permission_id', Integer,
|
| 51 |
ForeignKey('permission.permission_id'))
|
| 52 |
)
|
| 53 |
|
| 54 |
|
| 55 |
class Visit(object):
|
| 56 |
def lookup_visit(cls, visit_key):
|
| 57 |
return Visit.get(visit_key)
|
| 58 |
lookup_visit = classmethod(lookup_visit)
|
| 59 |
|
| 60 |
class VisitIdentity(object):
|
| 61 |
pass
|
| 62 |
|
| 63 |
class Group(object):
|
| 64 |
"""
|
| 65 |
An ultra-simple group definition.
|
| 66 |
"""
|
| 67 |
pass
|
| 68 |
|
| 69 |
class User(object):
|
| 70 |
"""
|
| 71 |
Reasonably basic User definition. Probably would want additional
|
| 72 |
attributes.
|
| 73 |
"""
|
| 74 |
def permissions(self):
|
| 75 |
perms = set()
|
| 76 |
for g in self.groups:
|
| 77 |
perms = perms | set(g.permissions)
|
| 78 |
return perms
|
| 79 |
permissions = property(permissions)
|
| 80 |
|
| 81 |
class Permission(object):
|
| 82 |
pass
|
| 83 |
|
| 84 |
assign_mapper(session.context, Visit, visits_table)
|
| 85 |
assign_mapper(session.context, VisitIdentity, visit_identity_table,
|
| 86 |
properties=dict(users=relation(User, backref='visit_identity')))
|
| 87 |
assign_mapper(session.context, User, users_table)
|
| 88 |
assign_mapper(session.context, Group, groups_table,
|
| 89 |
properties=dict(users=relation(User,secondary=user_group_table)))
|
| 90 |
assign_mapper(session.context, Permission, permissions_table,
|
| 91 |
properties=dict(groups=relation(Group,secondary=group_permission_table)))
|