In the typical 0_db.py file I'm setting auth.settings.register_onaccept=[complete_login]
I also define complete_login there and it raises an HTTP(200) for a redirect. Now, in my "user" controller I have: def register(): ... register_form = SQLFORM.factory( db.auth_user, ... ) ... if register_form.process(formname='register-form', onvalidation= validate_registration).accepted: # create user user_id = db.auth_user.insert( first_name='', last_name='', email=register_form.vars.email, ... other stuff ... password=register_form.vars.password, ) ... do a lot of group and permission stuff ... # auto log them in from gluon.storage import Storage, Settings, Messages session.auth = Storage(user=db.auth_user[user_id], last_visit= request.now, expiration=auth.settings.expiration) elif register_form.errors: response.flash = T('Please correct error in registration form') return dict(register_form=register_form) The problem is, the complete_login() function is not getting executed after register() returns. Why not? FWIW, I also have auth.settings.login_onaccept set as well, but it's function isn't getting executed either.