Wow, I'm really losing it. I'm referring to line number 726 instead of 727 in C:\dev\web2py\gluon\dal.py in create_table.
Sorry for the sloppy reporting. -Jim On Thu, Aug 30, 2012 at 5:25 PM, Massimo Di Pierro < [email protected]> wrote: > In which file? A web2py file? > > On Thursday, 30 August 2012 16:51:52 UTC-5, Jim S wrote: >> >> Sorry, I had a debug line in db.py. The actual offending line there is >> 726. >> >> -Jim >> >> On Thursday, August 30, 2012 4:44:40 PM UTC-5, Jim S wrote: >>> >>> Hi – sorry if this gets there multiple times, but I’ve posted twice in >>> the past 6 hours and it hasn’t shown up yet: >>> >>> >>> >>> I’m getting the following: >>> >>> >>> >>> Traceback (most recent call last): >>> >>> File "C:\dev\web2py\gluon\**restricted.py", line 209, in restricted >>> >>> exec ccode in environment >>> >>> File "C:/dev/web2py/applications/**infocenter/models/db.py", line 88, >>> in <module> >>> >>> auth.define_tables() ** # creates all >>> needed tables >>> >>> File "C:\dev\web2py\gluon\tools.py"**, line 1501, in define_tables >>> >>> fake_migrate=fake_migrate)) >>> >>> File "C:\dev\web2py\gluon\dal.py", line 7051, in define_table >>> >>> table = self.lazy_define_table(**tablename,*fields,**args) >>> >>> File "C:\dev\web2py\gluon\dal.py", line 7082, in lazy_define_table >>> >>> polymodel=polymodel) >>> >>> File "C:\dev\web2py\gluon\dal.py", line 727, in create_table >>> >>> on_delete_action=field.**ondelete) >>> >>> KeyError: 'index_name`' >>> >>> >>> >>> Offending line of my code is: >>> >>> auth.define_tables() >>> >>> >>> >>> Code up to that point: >>> >>> >>> >>> from gluon.custom_import import track_changes >>> >>> track_changes() >>> >>> >>> >>> import icUtil >>> >>> import infoCenterUtil >>> >>> import logging >>> >>> from dateutil.relativedelta import * >>> >>> from dateutil.parser import * >>> >>> import datetime >>> >>> import os >>> >>> from plugin_suggest_widget import suggest_widget >>> >>> >>> >>> log = logging.getLogger('InfoCenter'**) >>> >>> if len(log.handlers) == 0: >>> >>> log = icUtil.getLog(loggerName='**InfoCenter', level='INFO', >>> echo=True) >>> >>> >>> >>> if infoCenterUtil.migrate(): >>> >>> db = DAL(infoCenterUtil.**getDalString(), bigint_id=True) >>> >>> else: >>> >>> db = DAL(infoCenterUtil.**getDalString(), migrate=False, >>> >>> migrate_enabled=**False, bigint_id=True) >>> >>> >>> >>> # by default give a view/generic.extension to all actions from localhost >>> >>> # none otherwise. a pattern can be 'controller/function.**extension' >>> >>> response.generic_patterns = ['*'] if request.is_local else [] >>> >>> >>> >>> #print request.env.path_info >>> >>> >>> >>> ##############################**##############################** >>> ############# >>> >>> ## Here is sample code if you need for >>> >>> ## - email capabilities >>> >>> ## - authentication (registration, login, logout, ... ) >>> >>> ## - authorization (role based authorization) >>> >>> ## - services (xml, csv, json, xmlrpc, jsonrpc, amf, rss) >>> >>> ## - crud actions >>> >>> ## (more options discussed in gluon/tools.py) >>> >>> ##############################**##############################** >>> ############# >>> >>> >>> >>> from gluon.tools import Mail, Auth, Crud, Service, PluginManager, >>> prettydate >>> >>> >>> >>> mail = Mail() ** # mailer >>> >>> auth = Auth(db) ** # >>> authentication/authorization >>> >>> crud = Crud(db) ** # for CRUD helpers >>> using auth >>> >>> service = Service() ** # for json, xml, >>> jsonrpc, xmlrpc, amfrpc >>> >>> plugins = PluginManager() >>> >>> >>> >>> from gluon.contrib.login_methods.**email_auth import email_auth >>> >>> #auth.settings.login_methods.**append((email_auth('smtp.** >>> asdfasdf.com:587 <http://smtp.asdfasdf.com:587>', '@asdfasd.com'))) >>> >>> auth.settings.login_methods.**append((email_auth('mail.**asdfasdf.com<http://mail.asdfasdf.com>', >>> '@sadfs.com'))) >>> >>> >>> >>> mail.settings.server = 'mail.asdfjl.com' # your SMTP server >>> >>> mail.settings.sender = '[email protected]' # your email >>> >>> mail.settings.login = 'asdf:alkdsjl' # your credentials or None >>> >>> >>> >>> auth.settings.hmac_key = 'sha512:9d8d83af-6548-410b-**9cf5-e01a163b498d' >>> # before define_tables() >>> >>> >>> >>> auth_user = db.define_table( >>> >>> auth.settings.table_user_name, >>> >>> Field('first_name', length=128, default='', required=True), >>> >>> Field('last_name', length=128, default='', required=True), >>> >>> Field('email', length=128, unique=True, required=True), >>> >>> Field('password', 'password', length=512, >>> >>> readable=True, writable=True, label='Password'), >>> >>> Field('registration_key', length=512, >>> >>> writable=False, readable=False, default=''), >>> >>> Field('reset_password_key', length=512, >>> >>> writable=False, readable=False, default=''), >>> >>> Field('registration_id', length=512, >>> >>> writable=False, readable=False, default=''), >>> >>> Field('brillLogon', length=10, default='', label='Brill Logon'), >>> >>> Field('technician', 'boolean', default=False), >>> >>> Field('dispatcher', 'boolean', default=False), >>> >>> Field('lastFirst', compute=lambda u: '%s, %s' % (u['last_name'], >>> u['first_name']), label='Name'), >>> >>> Field('firstLast', compute=lambda u: '%s %s' % (u['first_name'], >>> u['last_name']), label='Name'), >>> >>> format='%(last_name)s, %(first_name)s') >>> >>> >>> >>> auth_user.first_name.requires = IS_NOT_EMPTY(error_message=** >>> auth.messages.is_empty) >>> >>> auth_user.last_name.requires = IS_NOT_EMPTY(error_message=** >>> auth.messages.is_empty) >>> >>> auth_user.password.requires = [CRYPT()] >>> >>> auth_user.email.requires = [IS_EMAIL(error_message=auth.** >>> messages.invalid_email), >>> >>> IS_NOT_IN_DB(db, auth_user.email), >>> >>> IS_NOT_EMPTY(error_**message=auth.messages.is_**empty)] >>> >>> auth_user.id.readable = False >>> >>> auth_user._plural = 'Users' >>> >>> >>> >>> auth.settings.table_user = auth_user >>> >>> >>> >>> auth.define_tables() >>> >>> >>> >>> >>> >>> Anyone with any idea why this is happening? Seems to be when it is >>> processing the auth_membership table. Happens on existing or new (empty, >>> no tables) database. Will create auth_user and auth_group on clean db >>> before it fails. >>> >>> >>> >>> -Jim >>> >>> >>> >> -- > > > > --

