thanks for the URL. I've been doing a "binary search" with versions but I've not checked every version. here's what I've found so far:
v1.67.2 . works locally & GAE v1.68.2 . works locally & GAE v1.69.1 . works locally & GAE v1.70.1 . works locally & GAE v1.71.1 . works locally. GAE reports 'Internal error' on start-up. v1.71.2 . works locally. GAE reports 'Internal error' on submitting registration form v1.72.3 . works locally but fails on GAE at 'gluon/main.py", line 469, session._try_store_in_db' v1.73.1 . fails locally at 'gluon\globals.py", line 385, in _try_store_on_disk' v1.74.1 . fails locally at 'gluon\globals.py", line 375, in _try_store_on_disk' Log output for v1.71.1 GAE NameError: global name 'SQLCustomType' is not defined That logout doesn't look very helpful. Let me know what version you'd like to see a trace from the log for. 2010/1/19 mdipierro <mdipie...@cs.depaul.edu> > http://web2py.com/examples/static/xxxx/web2py_src.zip > > where xxxx is a version. Only some versions are stored. > > I will look at your code asap. > > > On Jan 19, 5:58 am, Carl <carl.ro...@gmail.com> wrote: > > Massimo, I've sent you a stand-alone example that is as small as > > possible. I don't have upload access to Files in this group, hence the > > direct email. > > > > I was using Web2py v1.67.2 and it was only an upgrade to v1.74.5 that > > produced this error. > > > > I am willing to test the code with each version of Web2py since > > v1.67.2 to narrow down the change (if you think that would help you > > debug). > > > > Where can I get these versions of web2py? > > > > On Jan 18, 2:14 pm, Carl <carl.ro...@gmail.com> wrote: > > > > > hi, > > > > > I made some progress. The problem looks to be in the area of writing > > > data to GAE. Until I do this I can register and login successful > > > (provided I tweak the code not to care about this populated data). > > > > > Once I call the populate() function below I can no longer register/ > > > login. > > > > > class Salutations(): > > > def __init__(self, db, T): > > > (self.db, self.T) = (db, T) > > > > > def populate( self): > > > ''' > > > Envoy defines a short list of salutations > > > Salutations help build a relationship with a client > > > ''' > > > > > T = self.T > > > salutations= ( > > > (10, T('Mr')), > > > (20, T('Ms')), > > > (30, T('Mrs')), > > > (40, T('Miss')), > > > (50, T('Dr')), > > > (60, T('Prof.')) ) > > > > > for salu in salutations: > > > dbsals = self.db > > > (self.db.salutations.salutation_order==salu[0]).select() > > > if not dbsals: > > > self.db.salutations.insert(salutation_order=salu[0], > > > salutation=unicode(salu[1])) > > > else: > > > dbsals[0].update_record( salutation_order=salu[0], > > > salutation=unicode(salu[1])) > > > > > return( len(salutations)) > > > > > I tried changing the unicode() calls to str() but it made no material > > > difference. > > > > > Am I making a basic error in populate() ? > > > > > On Jan 16, 12:29 pm, Carl <carl.ro...@gmail.com> wrote: > > > > > > Additional information... > > > > > > In thinking that perhaps GAE hadn't delete *all* my data and hence > had > > > > hidden corruption I looked at an earlier version of my app. > > > > > > GAE allows me to run different versions of an app against the same > > > > database (big table data). > > > > > > I ran my previous version that is built on Web2py 1.67.2 and it > > > > registers/logins successfully. > > > > So although our issue is subtle at least it's on our side and I don't > > > > need to try talking to google staff :) > > > > > > On Jan 15, 9:20 pm, Carl <carl.ro...@gmail.com> wrote: > > > > > > > I had deleted GAE's tables before contacting you; I've just deleted > them > > > > > again but I get the same behaviour. There is perhaps a subtle > difference > > > > > between dev_appserver and the real-deal GAE. > > > > > > > I'll put together a stand-alone app tomorrow. > > > > > > > 2010/1/15 mdipierro <mdipie...@cs.depaul.edu> > > > > > > > > One more test. What bothers me is that is works on dev_appserver > but > > > > > > not when deployed. There must be some corrupted data in the > database. > > > > > > Is it an option for you to delete all data on GAE? > > > > > > > > On Jan 15, 12:22 pm, Carl <carl.ro...@gmail.com> wrote: > > > > > > > I've taken out the orderby clauses but the login failure still > happens > > > > > > (I've > > > > > > > had those clauses in for earlier versions of web2py but it was > worth > > > > > > > looking). > > > > > > > > > Perhaps these two statements (default.py in user() ) are the > issue on > > > > > > GAE? > > > > > > > db.auth_user.billing_country.requires = > IS_NULL_OR(IS_NOT_EMPTY()) > > > > > > > db.auth_user.country.requires = IS_NULL_OR(IS_NOT_EMPTY()) > > > > > > > > > I am using a custom form which doesn't not display these two > fields so > > > > > > I've > > > > > > > added these two statements to keep the registration process > happy which > > > > > > > would otherwise want values from the user for them. > > > > > > > > > in db.py both fields have the clause: > > > > > > > requires=IS_NULL_OR(IS_IN_DB(db,db.iso3166.id,'%(country)s'))) > > > > > > > > > Does that aim/explanation make sense to you? The code is quite > old but > > > > > > > perhaps Web2py is translating to GAE in a subtley different > way? If I > > > > > > remove > > > > > > > both statements then registration fails so I can't simply > remove them to > > > > > > > test if the app works on GAE. > > > > > > > > > Is there an alternative approach I could take? At least to test > further? > > > > > > > > > 2010/1/15 mdipierro <mdipie...@cs.depaul.edu> > > > > > > > > > > I see a lot of orderby in those validators that create > problems. > > > > > > > > > > I think the problem is there. > > > > > > > > > > Try remove the orderby and see if the error goes away. > > > > > > > > > > If it does there are two options: > > > > > > > > 1) you need an index > > > > > > > > 2) the query is somehow invalid on GAE > > > > > > > > > > Massimo > > > > > > > > > > On Jan 15, 11:17 am, Carl <carl.ro...@gmail.com> wrote: > > > > > > > > > I made the changes you listed but the failed login still > persists > > > > > > (you > > > > > > > > > probably expected it to but I was forever hopeful! :) > > > > > > > > > > > I'll see if I can create a small app that replicates the > issue and > > > > > > send > > > > > > > > it > > > > > > > > > to you. > > > > > > > > > thanks for your time. > > > > > > > > > > > 2010/1/15 mdipierro <mdipie...@cs.depaul.edu> > > > > > > > > > > > > I do not know why you experience the behavior that you do > but there > > > > > > > > > > are some errors in those commented lines: > > > > > > > > > > > > 1) > > > > > > > > > > > > #cdrdb.Field('country', db.iso3166, > requires=IS_NULL_OR > > > > > > > > > > (IS_INT_IN_RANGE(0, 1e100))), > > > > > > > > > > > > should be > > > > > > > > > > > > cdrdb.Field('country', db.iso3166, requires=IS_IN_DB > > > > > > > > > > (db,db.iso3166.id,'%(country)s')) > > > > > > > > > > > > 2) > > > > > > > > > > > > #cdrdb.Field('agent_salutation', db.salutations, > > > > > > > > > > requires=IS_NULL_OR(IS_INT_IN_RANGE(0, 1e100))), > > > > > > > > > > > > should be > > > > > > > > > > > > cdrdb.Field('agent_salutation', db.salutations, > > > > > > > > > > requires=IS_NULL_OR(db,db.salutations.id > ,'%(salutation)s')) > > > > > > > > > > > > sure you want a reference for this and not a IS_IN_SET? > > > > > > > > > > > > 3) > > > > > > > > > > > > #cdrdb.Field('agent_country', db.iso3166, > label='Country', > > > > > > > > > > requires=IS_NULL_OR(IS_INT_IN_RANGE(0, 1e100))), > > > > > > > > > > > > should be > > > > > > > > > > > > cdrdb.Field('agent_country', db.iso3166, > label='Country', > > > > > > > > > > requires=IS_NULL_OR(IS_IN_DB(db,db.iso3166.id > ,'%(country)s')) > > > > > > > > > > > > 4) > > > > > > > > > > > > #cdrdb.Field('billing_country', db.iso3166, > label='Billing > > > > > > > > > > country', requires=IS_NULL_OR(IS_INT_IN_RANGE(0, 1e100))) > > > > > > > > > > > > should be > > > > > > > > > > > > #cdrdb.Field('billing_country', db.iso3166, > label='Billing > > > > > > > > > > country', requires=IS_NULL_OR(IS_IN_DB(db,db.iso3166.id > > > > > > ,'%(country) > > > > > > > > > > s')) > > > > > > > > > > > > 5) > > > > > > > > > > > > #cdrdb.auth_user.country.requires = > IS_NULL_OR(IS_NOT_EMPTY()) > > > > > > > > > > > > I am not so sure what you need here. > > > > > > > > > > > > Massimo > > > > > > > > > > > > On Jan 15, 10:38 am, Carl <carl.ro...@gmail.com> wrote: > > > > > > > > > > > hi > > > > > > > > > > > > > I gotten down to the area that's tripping up. > > > > > > > > > > > > > My app will login correctly if I comment out the > following lines; > > > > > > > > > > > I've put those commented lines in context below... > > > > > > > > > > > > > FILE: models/dp.py > > > > > > > > > > > db.define_table('iso3166', > > > > > > > > > > > SQLField('country', 'string', > length=128, > > > > > > > > > > > required=True), > > > > > > > > > > > SQLField('country_iso', 'integer', > > > > > > required=True), > > > > > > > > > > > SQLField('country_order', 'integer', > > > > > > required=True)) > > > > > > > > > > > > > db.define_table('salutations', > > > > > > > > > > > SQLField('salutation', 'string', > length=128, > > > > > > > > > > > required=True), > > > > > > > > > > > SQLField('salutation_order', 'integer', > > > > > > > > > > > required=True)) > > > > > > > > > > > > > auth.settings.table_user = db.define_table( > > > > > > > > > > > auth.settings.table_user_name, > > > > > > > > > > > db.Field('email', 'string', length=254, > unique=True, > > > > > > > > notnull=True, > > > > > > > > > > > required=True, > > > > > > > > > > > requires = [IS_LOWER(), > > > > > > > > > > > IS_EMAIL(), > > > > > > > > > > > IS_NOT_IN_DB > > > > > > > > > > > (db,'%s.email'%auth.settings.table_user_name)]), > > > > > > > > > > > db.Field('password', 'password', length=512, > readable=False, > > > > > > > > > > > notnull=True, required=True, label='Password', > > > > > > > > > > > requires = [IS_NOT_EMPTY(), > > > > > > > > CRYPT(key='12angrymen12apollo57envoy')]), > > > > > > > > > > > db.Field('registration_key', length=128, > writable=False, > > > > > > > > > > > readable=False, default=''), > > > > > > > > > > > db.Field('first_name', 'string', length=128), > > > > > > > > > > > db.Field('last_name', 'string', length=128), > > > > > > > > > > > db.Field('job_title', 'string', length=128), > > > > > > > > > > > db.Field('postcode', 'string', length=12), > > > > > > > > > > > #cdrdb.Field('country', db.iso3166, > requires=IS_NULL_OR > > > > > > > > > > > (IS_INT_IN_RANGE(0, 1e100))), > > > > > > > > > > > #cdrdb.Field('agent_salutation', db.salutations, > > > > > > > > > > > requires=IS_NULL_OR(IS_INT_IN_RANGE(0, 1e100))), > > > > > > > > > > > db.Field('agent_name', 'string', length=128, > label='Company > > > > > > > > > > > name'), > > > > > > > > > > > db.Field('agent_address', 'text', label='Company > address'), > > > > > > > > > > > db.Field('agent_postcode', 'string', length=12, > > > > > > label='Company > > > > > > > > > > > postcode'), > > > > > > > > > > > #cdrdb.Field('agent_country', db.iso3166, > label='Country', > > > > ... > > > > read more ยป > > -- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To post to this group, send email to web...@googlegroups.com. > To unsubscribe from this group, send email to > web2py+unsubscr...@googlegroups.com<web2py%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/web2py?hl=en. > > > >--
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To post to this group, send email to web...@googlegroups.com.
To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/web2py?hl=en.