Stickum

Python code pasted @ 15:49 on Sat, 25 Nov 06
Copy & Paste Plain Text
1
                                                                     
2
                                                                     
3
                                                                     
4
                                             
5
###
6
# The identity stuff.
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)))