import oilarchive
This commit is contained in:
commit
2bb49ff965
37 changed files with 1027 additions and 0 deletions
105
oilarchive/model.py
Normal file
105
oilarchive/model.py
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
from datetime import datetime
|
||||
from turbogears.database import PackageHub
|
||||
from sqlobject import *
|
||||
from turbogears import identity
|
||||
|
||||
hub = PackageHub("oilarchive")
|
||||
__connection__ = hub
|
||||
|
||||
# identity models.
|
||||
class Visit(SQLObject):
|
||||
class sqlmeta:
|
||||
table = "visit"
|
||||
|
||||
visit_key = StringCol(length=40, alternateID=True,
|
||||
alternateMethodName="by_visit_key")
|
||||
created = DateTimeCol(default=datetime.now)
|
||||
expiry = DateTimeCol()
|
||||
|
||||
def lookup_visit(cls, visit_key):
|
||||
try:
|
||||
return cls.by_visit_key(visit_key)
|
||||
except SQLObjectNotFound:
|
||||
return None
|
||||
lookup_visit = classmethod(lookup_visit)
|
||||
|
||||
class VisitIdentity(SQLObject):
|
||||
visit_key = StringCol(length=40, alternateID=True,
|
||||
alternateMethodName="by_visit_key")
|
||||
user_id = IntCol()
|
||||
|
||||
|
||||
class Group(SQLObject):
|
||||
"""
|
||||
An ultra-simple group definition.
|
||||
"""
|
||||
|
||||
# names like "Group", "Order" and "User" are reserved words in SQL
|
||||
# so we set the name to something safe for SQL
|
||||
class sqlmeta:
|
||||
table = "tg_group"
|
||||
|
||||
group_name = UnicodeCol(length=16, alternateID=True,
|
||||
alternateMethodName="by_group_name")
|
||||
display_name = UnicodeCol(length=255)
|
||||
created = DateTimeCol(default=datetime.now)
|
||||
|
||||
# collection of all users belonging to this group
|
||||
users = RelatedJoin("User", intermediateTable="user_group",
|
||||
joinColumn="group_id", otherColumn="user_id")
|
||||
|
||||
# collection of all permissions for this group
|
||||
permissions = RelatedJoin("Permission", joinColumn="group_id",
|
||||
intermediateTable="group_permission",
|
||||
otherColumn="permission_id")
|
||||
|
||||
|
||||
class User(SQLObject):
|
||||
"""
|
||||
Reasonably basic User definition. Probably would want additional attributes.
|
||||
"""
|
||||
# names like "Group", "Order" and "User" are reserved words in SQL
|
||||
# so we set the name to something safe for SQL
|
||||
class sqlmeta:
|
||||
table = "tg_user"
|
||||
|
||||
user_name = UnicodeCol(length=16, alternateID=True,
|
||||
alternateMethodName="by_user_name")
|
||||
email_address = UnicodeCol(length=255, alternateID=True,
|
||||
alternateMethodName="by_email_address")
|
||||
display_name = UnicodeCol(length=255)
|
||||
password = UnicodeCol(length=40)
|
||||
created = DateTimeCol(default=datetime.now)
|
||||
|
||||
# groups this user belongs to
|
||||
groups = RelatedJoin("Group", intermediateTable="user_group",
|
||||
joinColumn="user_id", otherColumn="group_id")
|
||||
|
||||
def _get_permissions(self):
|
||||
perms = set()
|
||||
for g in self.groups:
|
||||
perms = perms | set(g.permissions)
|
||||
return perms
|
||||
|
||||
def _set_password(self, cleartext_password):
|
||||
"Runs cleartext_password through the hash algorithm before saving."
|
||||
hash = identity.encrypt_password(cleartext_password)
|
||||
self._SO_set_password(hash)
|
||||
|
||||
def set_password_raw(self, password):
|
||||
"Saves the password as-is to the database."
|
||||
self._SO_set_password(password)
|
||||
|
||||
|
||||
|
||||
class Permission(SQLObject):
|
||||
permission_name = UnicodeCol(length=16, alternateID=True,
|
||||
alternateMethodName="by_permission_name")
|
||||
description = UnicodeCol(length=255)
|
||||
|
||||
groups = RelatedJoin("Group",
|
||||
intermediateTable="group_permission",
|
||||
joinColumn="permission_id",
|
||||
otherColumn="group_id")
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue