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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---