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
-~----------~----~----~----~------~----~------~--~---

Reply via email to