1 from datetime import datetime
3 from sqlobject import *
4 from turbogears.database import PackageHub
5 from turbogears import identity
7 hub = PackageHub("beweb")
10 class Visit(SQLObject):
14 visit_key = StringCol(length=40, alternateID=True,
15 alternateMethodName="by_visit_key")
16 created = DateTimeCol(default=datetime.now)
17 expiry = DateTimeCol()
19 def lookup_visit(cls, visit_key):
21 return cls.by_visit_key(visit_key)
22 except SQLObjectNotFound:
24 lookup_visit = classmethod(lookup_visit)
26 class VisitIdentity(SQLObject):
27 visit_key = StringCol(length=40, alternateID=True,
28 alternateMethodName="by_visit_key")
32 class Group(SQLObject):
34 An ultra-simple group definition.
37 # names like "Group", "Order" and "User" are reserved words in SQL
38 # so we set the name to something safe for SQL
42 group_name = UnicodeCol(length=16, alternateID=True,
43 alternateMethodName="by_group_name")
44 display_name = UnicodeCol(length=255)
45 created = DateTimeCol(default=datetime.now)
47 # collection of all users belonging to this group
48 users = RelatedJoin("User", intermediateTable="user_group",
49 joinColumn="group_id", otherColumn="user_id")
51 # collection of all permissions for this group
52 permissions = RelatedJoin("Permission", joinColumn="group_id",
53 intermediateTable="group_permission",
54 otherColumn="permission_id")
57 class User(SQLObject):
59 Reasonably basic User definition. Probably would want additional attributes.
61 # names like "Group", "Order" and "User" are reserved words in SQL
62 # so we set the name to something safe for SQL
66 child_name = UnicodeCol(length=255)
67 user_name = UnicodeCol(length=16, alternateID=True,
68 alternateMethodName="by_user_name")
69 email_address = UnicodeCol(length=255, alternateID=True,
70 alternateMethodName="by_email_address")
71 display_name = UnicodeCol(length=255)
72 password = UnicodeCol(length=40)
73 created = DateTimeCol(default=datetime.now)
75 # groups this user belongs to
76 groups = RelatedJoin("Group", intermediateTable="user_group",
77 joinColumn="user_id", otherColumn="group_id")
79 def _get_permissions(self):
82 perms = perms | set(g.permissions)
85 def _set_password(self, cleartext_password):
86 "Runs cleartext_password through the hash algorithm before saving."
87 hash = identity.encrypt_password(cleartext_password)
88 self._SO_set_password(hash)
90 def set_password_raw(self, password):
91 "Saves the password as-is to the database."
92 self._SO_set_password(password)
96 class Permission(SQLObject):
97 permission_name = UnicodeCol(length=16, alternateID=True,
98 alternateMethodName="by_permission_name")
99 description = UnicodeCol(length=255)
101 groups = RelatedJoin("Group",
102 intermediateTable="group_permission",
103 joinColumn="permission_id",
104 otherColumn="group_id")
107 return dict((u.user_name, u.display_name) for u in User.select())