No need. Simply use auth.define_tables(username=True)
and if you need db.auth_user.username.label = 'My Username' On Monday, 1 August 2016 17:04:23 UTC-5, b.l. masters wrote: > > Hi > > I am new to Web2py, so I apologize in advance if this is basic. > > So, I am wanting to create a custom login, that does not require someone > to enter an email. So, following some of the examples I have found out > there, I created a custom auth table, with a username, etc. (I paste the > code below). So my issue is, that on my local instance this is working > fine. I am able to create multiple new accounts that do not require an > email. However, when I attempt to do the same on an amazon instance I > created, I am getting the following message: > > <class 'sqlite3.IntegrityError'> UNIQUE constraint failed: auth_user.email > > So clearly this is related to the auth_user.email column requiring it to > be unique (and I can create at least one account, and if I delete that > record, I can create a new account again). However, since it is forcing me > to have the email field be unique, this means I cannot ever create more > than the initial email account (this is even if I change Field('email' to > be unique=False) > > I could create a custom form, and generate some dummy unique email each > time, etc. But is there not some standard way this should work? Or some way > through the DAL that I can change the "unique" field requirement on this > particular column, so that I quit having this issue? Or, is it maybe how I > implemented the custom auth table that is causing the issue (code below)? > > Thanks for any assistance. And here is my code: > > in default.py > > def index(): > > #some action here > return dict(form=auth.register()) > > > > in db.py > > > db.define_table( > auth.settings.table_user_name, > Field('first_name', length=128, default='', writable=False, > readable=False), > Field('last_name', length=128, default='', writable=False, > readable=False, ), > Field('username', length=128, default='', unique=True), > Field('email', length=128, default='', unique=False, writable=False, > readable=False), # required > Field('password', 'password', length=512, # required > readable=False, label='Password'), > Field('registration_key', length=512, # required > writable=False, readable=False, default=''), > Field('reset_password_key', length=512, # required > writable=False, readable=False, default=''), > Field('registration_id', length=512, # required > writable=False, readable=False, default='')) > > ## do not forget validators > custom_auth_table = db[auth.settings.table_user_name] # get the > custom_auth_table > custom_auth_table.first_name.requires = > IS_NOT_EMPTY(error_message=auth.messages.is_empty) > custom_auth_table.last_name.requires = > IS_NOT_EMPTY(error_message=auth.messages.is_empty) > custom_auth_table.username.requires = IS_NOT_IN_DB(db, > custom_auth_table.username) > custom_auth_table.password.requires = [IS_STRONG(min=15, special=0, > upper=0), CRYPT()] > > > auth.settings.table_user = custom_auth_table # tell auth to use > custom_auth_table > > ## before auth.define_tables() > > auth.define_tables(username=True, signature=False, migrate=False) > auth.settings.remember_me_form=False > auth.settings.actions_disabled = ['retrieve_username', > 'request_reset_password'] > auth.settings.login_next = URL([some redirect here]) > auth.settings.register_next = URL([some redirect here]) > > > ## configure auth policy > auth.settings.registration_requires_verification = False > auth.settings.registration_requires_approval = False > #auth.settings.reset_password_requires_verification = True > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.