fixed problem with on_define
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
### DAL Improvements
|
||||
|
||||
- Support for DAL(lazy_tables=True) and db.define_table(on_define=lambda table:), thanks Jonathan
|
||||
- MongoDB support in DAL (experimental)
|
||||
- geodal and spatialite, thanks Denes and Fran (experimental)
|
||||
- db.mytable._before_insert, _after_insert, _before_update, _after_update, _before_delete. _after_delete (list of callbacks)
|
||||
@@ -17,6 +18,7 @@
|
||||
- experimental Sybase Adapter
|
||||
- added db.table.field.avg()
|
||||
- Support for Google App Engine projections
|
||||
- Field(... 'upload', default=path) now accepts a path to a local file as default value, if user does not upload a file. Relative path looks inside current application folder, thanks Marin
|
||||
|
||||
### Auth improvements
|
||||
|
||||
|
||||
2
VERSION
2
VERSION
@@ -1 +1 @@
|
||||
Version 2.00.0 (2012-08-23 09:20:22) dev
|
||||
Version 2.00.0 (2012-08-23 10:07:57) dev
|
||||
|
||||
107
gluon/tools.py
107
gluon/tools.py
@@ -1460,7 +1460,7 @@ class Auth(object):
|
||||
if not settings.email_case_sensitive:
|
||||
table.email.requires.insert(1,IS_LOWER())
|
||||
table.registration_key.default = ''
|
||||
settings.table_user = db[settings.table_user_name]
|
||||
reference_table_user = 'reference %s' % settings.table_user_name
|
||||
if not settings.table_group_name in db.tables:
|
||||
extra_fields = settings.extra_fields.get(
|
||||
settings.table_group_name,[])+signature_list
|
||||
@@ -1475,37 +1475,41 @@ class Auth(object):
|
||||
migrate=self.__get_migrate(
|
||||
settings.table_group_name, migrate),
|
||||
fake_migrate=fake_migrate,
|
||||
format = '%(role)s (%(id)s)'))
|
||||
table.role.requires = IS_NOT_IN_DB(db, '%s.role'
|
||||
% settings.table_group_name)
|
||||
settings.table_group = db[settings.table_group_name]
|
||||
format = '%(role)s (%(id)s)',
|
||||
on_define = lambda table:
|
||||
table.role.set_attributes(
|
||||
requires = IS_NOT_IN_DB(
|
||||
db, '%s.role'% settings.table_group_name))))
|
||||
reference_table_group = 'reference %s' % settings.table_group_name
|
||||
if not settings.table_membership_name in db.tables:
|
||||
extra_fields = settings.extra_fields.get(
|
||||
settings.table_membership_name,[])+signature_list
|
||||
table = db.define_table(
|
||||
settings.table_membership_name,
|
||||
Field('user_id', settings.table_user,
|
||||
Field('user_id', reference_table_user,
|
||||
label=self.messages.label_user_id),
|
||||
Field('group_id', settings.table_group,
|
||||
Field('group_id', reference_table_group,
|
||||
label=self.messages.label_group_id),
|
||||
*extra_fields,
|
||||
**dict(
|
||||
migrate=self.__get_migrate(
|
||||
settings.table_membership_name, migrate),
|
||||
fake_migrate=fake_migrate))
|
||||
table.user_id.requires = IS_IN_DB(db, '%s.id' %
|
||||
settings.table_user_name,
|
||||
settings.table_user._format)
|
||||
table.group_id.requires = IS_IN_DB(db, '%s.id' %
|
||||
settings.table_group_name,
|
||||
'%(role)s (%(id)s)')
|
||||
settings.table_membership = db[settings.table_membership_name]
|
||||
fake_migrate=fake_migrate,
|
||||
on_define = lambda table: (
|
||||
table.user_id.set_attributes(
|
||||
requires = IS_IN_DB(
|
||||
db, '%s.id' % settings.table_user_name,
|
||||
settings.table_user._format)).
|
||||
table.group_id.set_attributes(
|
||||
requires = IS_IN_DB(
|
||||
db, '%s.id' % settings.table_group_name,
|
||||
'%(role)s (%(id)s)')))))
|
||||
if not settings.table_permission_name in db.tables:
|
||||
extra_fields = settings.extra_fields.get(
|
||||
settings.table_permission_name,[])+signature_list
|
||||
table = db.define_table(
|
||||
settings.table_permission_name,
|
||||
Field('group_id', settings.table_group,
|
||||
Field('group_id', reference_table_group,
|
||||
label=self.messages.label_group_id),
|
||||
Field('name', default='default', length=512,
|
||||
label=self.messages.label_name),
|
||||
@@ -1517,14 +1521,17 @@ class Auth(object):
|
||||
**dict(
|
||||
migrate=self.__get_migrate(
|
||||
settings.table_permission_name, migrate),
|
||||
fake_migrate=fake_migrate))
|
||||
table.group_id.requires = IS_IN_DB(db, '%s.id' %
|
||||
settings.table_group_name,
|
||||
'%(role)s (%(id)s)')
|
||||
table.name.requires = IS_NOT_EMPTY(error_message=self.messages.is_empty)
|
||||
#table.table_name.requires = IS_EMPTY_OR(IS_IN_SET(self.db.tables))
|
||||
table.record_id.requires = IS_INT_IN_RANGE(0, 10 ** 9)
|
||||
settings.table_permission = db[settings.table_permission_name]
|
||||
fake_migrate=fake_migrate,
|
||||
on_define = lambda table: (
|
||||
table.group_id.set_attributes(
|
||||
requires = IS_IN_DB(
|
||||
db, '%s.id' % settings.table_group_name,
|
||||
'%(role)s (%(id)s)')),
|
||||
table.name.set_attributes(
|
||||
requires = IS_NOT_EMPTY(
|
||||
error_message=self.messages.is_empty)),
|
||||
table.record_id.set_attributes(
|
||||
requires = IS_INT_IN_RANGE(0, 10 ** 9)))))
|
||||
if not settings.table_event_name in db.tables:
|
||||
table = db.define_table(
|
||||
settings.table_event_name,
|
||||
@@ -1534,7 +1541,7 @@ class Auth(object):
|
||||
Field('client_ip',
|
||||
default=current.request.client,
|
||||
label=self.messages.label_client_ip),
|
||||
Field('user_id', settings.table_user, default=None,
|
||||
Field('user_id', reference_table_user, default=None,
|
||||
label=self.messages.label_user_id),
|
||||
Field('origin', default='auth', length=512,
|
||||
label=self.messages.label_origin),
|
||||
@@ -1544,19 +1551,24 @@ class Auth(object):
|
||||
**dict(
|
||||
migrate=self.__get_migrate(
|
||||
settings.table_event_name, migrate),
|
||||
fake_migrate=fake_migrate))
|
||||
table.user_id.requires = IS_IN_DB(db, '%s.id' %
|
||||
settings.table_user_name,
|
||||
settings.table_user._format)
|
||||
table.origin.requires = IS_NOT_EMPTY(error_message=self.messages.is_empty)
|
||||
table.description.requires = IS_NOT_EMPTY(error_message=self.messages.is_empty)
|
||||
settings.table_event = db[settings.table_event_name]
|
||||
fake_migrate=fake_migrate,
|
||||
on_define = lambda table: (
|
||||
table.user_id.set_attributes(
|
||||
requires = IS_IN_DB(
|
||||
db, '%s.id' % settings.table_user_name,
|
||||
settings.table_user._format)),
|
||||
table.origin.set_attributes(
|
||||
requires = IS_NOT_EMPTY(
|
||||
error_message=self.messages.is_empty)),
|
||||
table.description.set_attributes(
|
||||
requires = IS_NOT_EMPTY(
|
||||
error_message=self.messages.is_empty)))))
|
||||
now = current.request.now
|
||||
if settings.cas_domains:
|
||||
if not settings.table_cas_name in db.tables:
|
||||
table = db.define_table(
|
||||
settings.table_cas_name,
|
||||
Field('user_id', settings.table_user, default=None,
|
||||
Field('user_id', reference_table_user, default=None,
|
||||
label=self.messages.label_user_id),
|
||||
Field('created_on','datetime',default=now),
|
||||
Field('service',requires=IS_URL()),
|
||||
@@ -1566,18 +1578,29 @@ class Auth(object):
|
||||
**dict(
|
||||
migrate=self.__get_migrate(
|
||||
settings.table_cas_name, migrate),
|
||||
fake_migrate=fake_migrate))
|
||||
table.user_id.requires = IS_IN_DB(db, '%s.id' % \
|
||||
settings.table_user_name,
|
||||
settings.table_user._format)
|
||||
settings.table_cas = db[settings.table_cas_name]
|
||||
db._lazy_tables = lazy_tables
|
||||
if settings.cas_provider:
|
||||
fake_migrate=fake_migrate,
|
||||
on_define = lambda table: (
|
||||
table.user_id.set_attributes(
|
||||
requires = IS_IN_DB(
|
||||
db, '%s.id' % settings.table_user_name,
|
||||
settings.table_user._format)))))
|
||||
|
||||
if not db._lazy_tables:
|
||||
settings.table_user = db[settings.table_user_name]
|
||||
settings.table_group = db[settings.table_group_name]
|
||||
settings.table_membership = db[settings.table_membership_name]
|
||||
settings.table_permission = db[settings.table_permission_name]
|
||||
settings.table_event = db[settings.table_event_name]
|
||||
if settings.cas_domains:
|
||||
settings.table_cas = db[settings.table_cas_name]
|
||||
|
||||
if settings.cas_provider: ### THIS IS NOT LAZY
|
||||
settings.actions_disabled = \
|
||||
['profile','register','change_password','request_reset_password']
|
||||
['profile','register','change_password',
|
||||
'request_reset_password']
|
||||
from gluon.contrib.login_methods.cas_auth import CasAuth
|
||||
maps = settings.cas_maps
|
||||
if not maps:
|
||||
if not maps:
|
||||
maps = dict((name,lambda v,n=name:v.get(n,None)) for name in \
|
||||
settings.table_user.fields if name!='id' \
|
||||
and settings.table_user[name].readable)
|
||||
|
||||
Reference in New Issue
Block a user