Here is what I do have in *db.py* already:
mail=auth.settings.mailer
mail.settings.server = settings.email_server

are already set up from 0.py where I have:
settings.email_server = 'gae'
so they are already set up.

Please not again that on GAE logs I have this 
information which is referring to *settings.server,*
not *mail.settings.server* 

The line 327-328 in gluon/tools.py: is looking for *settings.server.* if 
not isinstance(self.*settings.server*, str):
raise Exception('Server address not specified')

==============================

db.define_table('auth_user',
    Field('username', type='string',
          label=T('Username')),
    Field('first_name', type='string',
          label=T('First Name')),
    Field('last_name', type='string',
          label=T('Last Name')),
    Field('email', type='string',
          label=T('Email')),
    Field('password', type='password',
          readable=False,
          label=T('Password')),
    Field('created_on','datetime',default=request.now,
          label=T('Created On'),writable=False,readable=False),
    Field('modified_on','datetime',default=request.now,
          label=T('Modified On'),writable=False,readable=False,
          update=request.now),
    Field('registration_key',default='',
          writable=False,readable=False),
    Field('reset_password_key',default='',
          writable=False,readable=False),
    Field('registration_id',default='',
          writable=False,readable=False),
    format='%(username)s',
    migrate=settings.migrate)


db.auth_user.first_name.requires = 
IS_NOT_EMPTY(error_message=auth.messages.is_empty)
db.auth_user.last_name.requires = 
IS_NOT_EMPTY(error_message=auth.messages.is_empty)
db.auth_user.password.requires = CRYPT(key=auth.settings.hmac_key)
db.auth_user.username.requires = IS_NOT_IN_DB(db, db.auth_user.username)
db.auth_user.registration_id.requires = IS_NOT_IN_DB(db, 
db.auth_user.registration_id)
db.auth_user.email.requires = 
(IS_EMAIL(error_message=auth.messages.invalid_email),
                               IS_NOT_IN_DB(db, db.auth_user.email))
auth.define_tables(migrate = settings.migrate) 

## configure email
mail=auth.settings.mailer
mail.settings.server = settings.email_server
mail.settings.sender = settings.email_sender
mail.settings.login = settings.email_login

## configure auth policy
auth.settings.registration_requires_verification = False
auth.settings.registration_requires_approval = False
auth.settings.reset_password_requires_verification = True

#auth.settings.login_next = URL('index')
auth.settings.login_next = '/'

#auth.settings.logout_next = URL('index')
auth.settings.logout_next = '/'

#auth.settings.profile_next = URL('index')
auth.settings.profile_next =  '/'

#auth.settings.register_next = URL('user', args='login')
auth.settings.register_next = '/'

#auth.settings.retrieve_username_next = URL('index')
auth.settings.retrieve_username_next = '/'

#auth.settings.retrieve_password_next = URL('index')
auth.settings.retrieve_password_next = '/'

#auth.settings.change_password_next = URL('index')
auth.settings.change_password_next = '/'

#auth.settings.request_reset_password_next = URL('user', args='login')
auth.settings.request_reset_password_next = '/'

#auth.settings.reset_password_next = URL('user', args='login')
auth.settings.reset_password_next = '/'

#auth.settings.verify_email_next = URL('user', args='login')
auth.settings.verify_email_next = '/'

Reply via email to