On Jun 25, 2007, at 5:33 PM, Diez B. Roggisch wrote:
> The last release of TJ included code for traversal of  
> InheritableSQLObjects.
> It looks as if that is buggy. Could you provide your model-file as  
> well?

Absolutely. Here it is:

from datetime import datetime
from turbogears.database import PackageHub
from sqlobject import *
from turbogears import identity

hub = PackageHub('shoplist')
__connection__ = hub

# class YourDataClass(SQLObject):
#     pass

# identity models.
class Visit(SQLObject):
     """
     A visit to your site
     """
     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):
     """
     A Visit that is link to a User object
     """
     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')

     # shop list related
     lists = RelatedJoin("List")

     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."
         password_hash = identity.encrypt_password(cleartext_password)
         self._SO_set_password(password_hash)

     def set_password_raw(self, password):
         "Saves the password as-is to the database."
         self._SO_set_password(password)


class Permission(SQLObject):
     """
     A relationship that determines what each Group can do
     """
     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')

class List(SQLObject):
     List_name = UnicodeCol(length=200)
     Creation_date = DateTimeCol()
     List_notes = UnicodeCol(length=1000)
     Users = RelatedJoin("User")
     Items = RelatedJoin("Item")


class Item(SQLObject):
     Name = UnicodeCol(alternateID=True, length=200,  
alternateMethodName='by_name')
     Quantity = UnicodeCol(alternateID=True, length=200)
     Priority = UnicodeCol(length=12)
     Notes = UnicodeCol(length=1000)
     Lists = RelatedJoin("List")





--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to