OH man! That's makes sense! "FYI, all the models are executed in alphabetical order at the start of each request...
I didn't realise this. If I had, I wouldn't have added that line. I'm gonna try removing it. Thank you :o) LB On 2 Jan, 22:26, Robin B <robi...@gmail.com> wrote: > Try removing this line from the controller: > > dk2=SQLDB("mysql://root:passw...@127.0.0.1:3306/dk2") > > It was redefining the dk2 that was defined in the models. > > FYI, all the models are executed in alphabetical order at the start of > each request, then the symbols from the models are automatically > available in the controllers, so you should not define dk2 in the > controller, its already available. > > Robin > > On Jan 2, 3:41 pm, LB22 <latn.bl...@googlemail.com> wrote: > > > Sorry, you're right. db(dk2,'jusers).insert was one of many desperate > > attempts at a solution. I forgot I hadn't changed it back. > > > So, i'll post the controller and model again in the original form... > > > Model: > > > from datetime import datetime, date, time > > > today = date.today() > > now = datetime.utcnow() > > > # ALWAYS tell python where the DB is...PLEASE. > > dk2=SQLDB("mysql://root:passw...@127.0.0.1:3306/dk2") > > > dk2.define_table('jusers', > > SQLField('displayname',length=32,requires= > > [IS_NOT_EMPTY(),IS_LENGTH(32),]), > > SQLField('username',length=40,requires= > > [IS_NOT_EMPTY(),IS_EMAIL(), IS_NOT_IN_DB(dk2,'jusers.username')]), > > SQLField('password',requires=IS_NOT_EMPTY()), > > SQLField('regdate','datetime',default=now), > > SQLField('retiredate','datetime',default=now), > > SQLField('active','boolean',default=True)) > > > dk2.define_table('jtype', > > SQLField('name',length=40,requires=IS_NOT_EMPTY > > ()), > > SQLField('user',dk2.jusers)) > > > dk2.define_table('journals', > > SQLField('user',dk2.jusers), > > SQLField('name',length=40,requires=IS_NOT_EMPTY > > ()), > > SQLField('startdate','datetime',default=now), > > SQLField('retireddate','datetime',default=now)) > > > dk2.define_table('jlink', > > SQLField('journal',dk2.journals)) > > > dk2.define_table('jentries', > > SQLField('journal',dk2.journals,requires= > > [IS_NOT_EMPTY(), IS_IN_DB(dk2,'journals.id')]), > > SQLField > > ('title',default=today,requires=IS_NOT_EMPTY()), > > SQLField('content','text',requires=IS_NOT_EMPTY > > ()), > > SQLField('createddate','datetime',default=now), > > SQLField('modifieddate','datetime',default=now)) > > > dk2.define_table('jtags', > > SQLField('tag',length=40), > > SQLField('jentry',dk2.jentries), > > SQLField('user',dk2.jusers)) > > > Controller: > > > from datetime import datetime, date, time > > from gluon.sqlhtml import form_factory > > > today = date.today() > > now = datetime.utcnow() > > > dk2=SQLDB("mysql://root:passw...@127.0.0.1:3306/dk2") > > > def uregister(): > > form = form_factory(SQLField('displayname',requires=IS_NOT_EMPTY > > (),label='Display Name'),\ > > SQLField('username',requires=[IS_NOT_EMPTY(),IS_EMAIL > > (error_message=T('Hey, this has to be an email address!')),IS_NOT_IN_DB > > (dk2,'jusers.username')],label='Email Address'),\ > > SQLField('password','password',label='Password')) > > > if form.accepts(request.vars,session): > > dk2.jusers.insert(displayname='form.vars.displayname', > > username='form.vars.username', password='form.vars.password', > > regdate='now') > > response.flash="Registration Accepted" > > > elif form.errors: > > response.flash="Sorry, there was a problem with your > > Registration" > > > else: > > response.flash="Please complete all fields before clicking the > > Submit button" > > > return dict(form=form,vars=form.vars) > > > When I click on the exposed controller in the admin\design, the form > > comes up fine, and when I test all the validation (e.g. NOT_IN_DB() > > for the username), it all works. But, once I complete the form > > correctly and submit, I get an error ticket. I've tried multiple > > variations, and actually originally started off using form(), but got > > the error, so switched to form_factory() instead, but still got the > > same error. I thought maybe I was referencing the table too early, but > > that was a problem I faced only briefly when first creating database > > models in web2py. > > > Any other ideas? > > > On 2 Jan, 21:05, Robin B <robi...@gmail.com> wrote: > > > > As far as variable references, are dk2, dk, and db all the same > > > database? > > > > There is something funny about: > > > > db(dk, 'jusers').insert(...) > > > > should it be: > > > > dk2.jusers.insert(...) > > > > Robin > > > > On Jan 2, 12:44 pm, LB22 <latn.bl...@googlemail.com> wrote: > > > > > Hi there, > > > > > I'm fairly new to both python and web2py, and I've run into a problem > > > > that I just can't seem to get around. I'm hoping someone can help. If > > > > anymore info is need, please let me know. > > > > > So, I keep getting this error: > > > > > Traceback (most recent call last): > > > > File "gluon\restricted.pyc", line 62, in restricted > > > > File "C:\Documents and Settings\Latn\Desktop\web2py_win\web2py > > > > \applications\dkt/controllers/uregister.py", line 29, in <module> > > > > File "gluon\globals.pyc", line 55, in <lambda> > > > > File "C:\Documents and Settings\Latn\Desktop\web2py_win\web2py > > > > \applications\dkt/controllers/uregister.py", line 16, in uregister > > > > File "gluon\sqlhtml.pyc", line 172, in accepts > > > > File "gluon\html.pyc", line 490, in accepts > > > > File "gluon\html.pyc", line 136, in _traverse > > > > File "gluon\html.pyc", line 136, in _traverse > > > > File "gluon\html.pyc", line 136, in _traverse > > > > File "gluon\html.pyc", line 136, in _traverse > > > > File "gluon\html.pyc", line 139, in _traverse > > > > File "gluon\html.pyc", line 366, in _validate > > > > File "gluon\validators.pyc", line 183, in __call__ > > > > File "gluon\sql.pyc", line 300, in __getitem__ > > > > KeyError: 'jusers' > > > > > I don't understand why though. This is the Model for the jusers table: > > > > > dk2.define_table('jusers', > > > > SQLField('displayname',length=32,requires= > > > > [IS_NOT_EMPTY(),IS_LENGTH(32),]), > > > > SQLField('username',length=40,requires= > > > > [IS_NOT_EMPTY(),IS_EMAIL(), IS_NOT_IN_DB(dk2,'jusers.username')]), > > > > SQLField('password',requires=IS_NOT_EMPTY()), > > > > SQLField('regdate','datetime',default=now), > > > > SQLField('retiredate','datetime',default=now), > > > > SQLField('active','boolean',default=True)) > > > > > And the Controller for my registration form: > > > > > def uregister(): > > > > form = form_factory(SQLField('displayname',requires=IS_NOT_EMPTY > > > > (),label='Display Name'),\ > > > > SQLField('username',requires=[IS_NOT_EMPTY(),IS_EMAIL > > > > (error_message=T('Hey, this has to be an email address!')),IS_NOT_IN_DB > > > > (dk,'jusers.username')],label='Email Address'),\ > > > > SQLField('password','password',label='Password')) > > > > > if form.accepts(request.vars,session): > > > > db(dk, 'jusers').insert(displayname='form.vars.displayname', > > > > username='form.vars.username', password='form.vars.password', > > > > regdate='now') > > > > response.flash="Registration Accepted" > > > > > elif form.errors: > > > > response.flash="Sorry, there was a problem with your > > > > Registration" > > > > > else: > > > > response.flash="Please complete all fields before clicking the > > > > Submit button" > > > > > return dict(form=form,vars=form.vars) > > > > > I've wasted several hours going around in circles, hoping that I've > > > > missing something really small (like on several other occasions), but > > > > I've not been able to find or come up with any solutions. Any help > > > > would be greatly appreciated. > > > > > Thanks > > > > > LB --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to web2py@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 -~----------~----~----~----~------~----~------~--~---