1
from datetime import datetime
3
from sqlobject import *
5
from turbogears import identity
6
from turbogears.database import PackageHub
8
hub = PackageHub("genshitest")
11
# class YourDataClass(SQLObject):
14
class Visit(SQLObject):
18
visit_key= StringCol( length=40, alternateID=True,
19
alternateMethodName="by_visit_key" )
20
created= DateTimeCol( default=datetime.now )
23
def lookup_visit( cls, visit_key ):
25
return cls.by_visit_key( visit_key )
26
except SQLObjectNotFound:
28
lookup_visit= classmethod(lookup_visit)
30
class VisitIdentity(SQLObject):
31
visit_key = StringCol(length=40, alternateID=True,
32
alternateMethodName="by_visit_key")
36
class Group(SQLObject):
38
An ultra-simple group definition.
41
# names like "Group", "Order" and "User" are reserved words in SQL
42
# so we set the name to something safe for SQL
46
group_name = UnicodeCol(length=16, alternateID=True,
47
alternateMethodName="by_group_name")
48
display_name = UnicodeCol(length=255)
49
created = DateTimeCol(default=datetime.now)
51
# collection of all users belonging to this group
52
users = RelatedJoin("User", intermediateTable="user_group",
53
joinColumn="group_id", otherColumn="user_id")
55
# collection of all permissions for this group
56
permissions = RelatedJoin("Permission", joinColumn="group_id",
57
intermediateTable="group_permission",
58
otherColumn="permission_id")
61
class User(SQLObject):
63
Reasonably basic User definition. Probably would want additional attributes.
65
# names like "Group", "Order" and "User" are reserved words in SQL
66
# so we set the name to something safe for SQL
70
user_name = UnicodeCol(length=16, alternateID=True,
71
alternateMethodName="by_user_name")
72
email_address = UnicodeCol(length=255, alternateID=True,
73
alternateMethodName="by_email_address")
74
display_name = UnicodeCol(length=255)
75
password = UnicodeCol(length=40)
76
created = DateTimeCol(default=datetime.now)
78
# groups this user belongs to
79
groups = RelatedJoin("Group", intermediateTable="user_group",
80
joinColumn="user_id", otherColumn="group_id")
82
def _get_permissions(self):
85
perms = perms | set(g.permissions)
88
def _set_password(self, cleartext_password):
89
"Runs cleartext_password through the hash algorithm before saving."
90
hash = identity.encrypt_password(cleartext_password)
91
self._SO_set_password(hash)
93
def set_password_raw(self, password):
94
"Saves the password as-is to the database."
95
self._SO_set_password(password)
99
class Permission(SQLObject):
100
permission_name = UnicodeCol(length=16, alternateID=True,
101
alternateMethodName="by_permission_name")
102
description = UnicodeCol(length=255)
104
groups = RelatedJoin("Group",
105
intermediateTable="group_permission",
106
joinColumn="permission_id",
107
otherColumn="group_id")