Just to update, that worked like a charm. Thanks again for your
help! :o)

On 2 Jan, 22:29, LB22 <latn.bl...@googlemail.com> wrote:
> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to