Hi all,

in db.py I'd like to extend Auth so that I can override some
methods... such as define tables... and maybe in the future make it
login using OpenID or facebook etc...

so I've extended Auth and and overrided define_tables... but I'm
getting an error on auth.define_tables()

any ideas ?



class MyAuth(Auth):
    def define_tables(self, migrate=True):
        """
        to be called unless tables are defined manually

        usages:

        auth.define_tables()                           # defines all
needed tables and table files UUID+'_auth_user.table',...

        auth.define_tables(migrate='myprefix_')        # defines all
needed tables and table files 'myprefix_auth_user.table',...

        auth.define_tables(migrate=False)              # defines all
needed tables without migration/table files

        """

        db = self.db
        if not self.settings.table_user:
            password = self.settings.password_field
            self.settings.table_user = db.define_table(
                self.settings.table_user_name,
                db.Field('first_name', length=128,default=''),
                db.Field('last_name', length=128,default=''),
                db.Field('location', length=128,default=''),
                db.Field('email', length=128,default=''),
                db.Field(password, 'password', readable=False,
                         label='Password'),
                db.Field('registration_key', length=128,
                         writable=False, readable=False, default=''),

migrate=self.__get_migrate(self.settings.table_user_name, migrate))
            table = self.settings.table_user
            table.first_name.requires = IS_NOT_EMPTY()
            table.last_name.requires = IS_NOT_EMPTY()
            table[password].requires = CRYPT()
            table.email.requires = [IS_EMAIL(), IS_NOT_IN_DB(db, '%s.email'
                                 % self.settings.table_user._tablename)]
            table.registration_key.default = ''
        if not self.settings.table_group:
            self.settings.table_group = \
                db.define_table(self.settings.table_group_name,
                                db.Field('role', length=128,default=''),
                                db.Field('description', 'text'),

migrate=self.__get_migrate(self.settings.table_group_name, migrate))
            table = self.settings.table_group
            table.role.requires = IS_NOT_IN_DB(db, '%s.role'
                 % self.settings.table_group._tablename)
        if not self.settings.table_membership:
            self.settings.table_membership = \
                db.define_table(self.settings.table_membership_name,
                                db.Field('user_id',
                                self.settings.table_user),
                                db.Field('group_id',
                                self.settings.table_group),

migrate=self.__get_migrate(self.settings.table_membership_name,
migrate))
            table = self.settings.table_membership
            table.user_id.requires = IS_IN_DB(db, '%s.id'
                 % self.settings.table_user._tablename,
                '%(id)s: %(first_name)s %(last_name)s\
')
            table.group_id.requires = IS_IN_DB(db, '%s.id'
                 % self.settings.table_group._tablename,
                '%(id)s: %(role)s')
        if not self.settings.table_permission:
            self.settings.table_permission = \
                db.define_table(self.settings.table_permission_name,
                                db.Field('group_id',self.settings.table_group),
                                db.Field('name', default='default'),
                                db.Field('table_name'),
                                db.Field('record_id', 'integer'),

migrate=self.__get_migrate(self.settings.table_permission_name,
migrate))         <----------- error here *******
            table = self.settings.table_permission
            table.group_id.requires = IS_IN_DB(db, '%s.id'
                 % self.settings.table_group._tablename,
                '%(id)s: %(role)s')
            table.name.requires = IS_NOT_EMPTY()
            table.table_name.requires = IS_IN_SET(self.db.tables)
            table.record_id.requires = IS_INT_IN_RANGE(0, 10 ** 9)
        if not self.settings.table_event:
            self.settings.table_event = db.define_table(
                self.settings.table_event_name,
                db.Field('time_stamp', 'datetime',
                         default=self.environment.request.now),
                db.Field('client_ip',
                         default=self.environment.request.client),
                db.Field('user_id', self.settings.table_user,
                         default=None),
                db.Field('origin', default='auth'),
                db.Field('description', 'text', default=''),

migrate=self.__get_migrate(self.settings.table_event_name, migrate))
            table = self.settings.table_event
            table.user_id.requires = IS_IN_DB(db, '%s.id'
                 % self.settings.table_user._tablename,
                '%(id)s: %(first_name)s %(last_name)s\
')
            table.origin.requires = IS_NOT_EMPTY()
            table.description.requires = IS_NOT_EMPTY()

auth=MyAuth(globals(),db)            # authentication/authorization
auth.define_tables()               # creates all needed tables


Traceback (most recent call last):
  File "/home/sebas/projects/meetings/src/gluon/restricted.py", line
107, in restricted
    exec ccode in environment
  File "/home/sebas/projects/meetings/src/applications/welcome/models/db.py",
line 151, in <module>
    auth.define_tables()               # creates all needed tables
  File "/home/sebas/projects/meetings/src/applications/welcome/models/db.py",
line 82, in define_tables
    migrate=self.__get_migrate(self.settings.table_user_name, migrate))
AttributeError: 'MyAuth' object has no attribute '_MyAuth__get_migrate'

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to