diff options
author | Aaron Bentley <aaron.bentley@utoronto.ca> | 2007-07-15 12:43:30 -0400 |
---|---|---|
committer | Aaron Bentley <aaron.bentley@utoronto.ca> | 2007-07-15 12:43:30 -0400 |
commit | 7969f5ec12c0107b7c799a7bf26d8c43c1615b15 (patch) | |
tree | 1d7f3f22fceabe46752fe85907bd24c40175abe2 /Bugs-Everywhere-Web/beweb/model.py | |
parent | 9703aefca39996f954a91f5426f193c06661e69c (diff) | |
parent | b14962ab20d38c2a8fdaba8ecde55174141891a5 (diff) | |
download | bugseverywhere-7969f5ec12c0107b7c799a7bf26d8c43c1615b15.tar.gz |
Merge from panometrics
Diffstat (limited to 'Bugs-Everywhere-Web/beweb/model.py')
-rw-r--r-- | Bugs-Everywhere-Web/beweb/model.py | 106 |
1 files changed, 99 insertions, 7 deletions
diff --git a/Bugs-Everywhere-Web/beweb/model.py b/Bugs-Everywhere-Web/beweb/model.py index 6a603bb..aa4b6b6 100644 --- a/Bugs-Everywhere-Web/beweb/model.py +++ b/Bugs-Everywhere-Web/beweb/model.py @@ -1,15 +1,107 @@ +from datetime import datetime + from sqlobject import * from turbogears.database import PackageHub -# Uncomment the following line if you wish to use Identity and SO_Provider -from turbogears.identity.soprovider import TG_User, TG_Group, TG_Permission from turbogears import identity hub = PackageHub("beweb") __connection__ = hub -def people_map(): - return dict([(u.userId, u.displayName) for u in TG_User.select() if - "fixbugs" in identity.current.permissions]) +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 YourDataClass(SQLObject): -# pass +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" + + child_name = UnicodeCol(length=255) + 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") + +def people_map(): + return dict((u.user_name, u.display_name) for u in User.select()) |