Mercurial > genshi > genshi-test
view examples/turbogears/genshitest/model.py @ 382:d7da3fba7faf
* Added documentation for the various stream event kinds.
* Move generation of HTML documentation into a custom distutils command, run by `setup.py build_doc`
* Added verification of doctest snippets in documentation, which can be run by `setup.py test_doc`
* Fixed `repr` of `Markup` instances.
author | cmlenz |
---|---|
date | Fri, 01 Dec 2006 23:43:59 +0000 |
parents | 24757b771651 |
children |
line wrap: on
line source
from datetime import datetime from sqlobject import * from turbogears import identity from turbogears.database import PackageHub hub = PackageHub("genshitest") __connection__ = hub # class YourDataClass(SQLObject): # pass 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")