Did this <http://stackoverflow.com/a/28585704/440323>solve your problem?

On Wednesday, February 18, 2015 at 5:07:02 AM UTC-5, Smruti Prakash Mohanty 
wrote:
>
> Hi
>
> I am using the web2py default auth table for user registration.
>
> I am having an additional table defined as such:
>
> db.define_table('nsksystem',
>                 Field('email_id', db.auth_user,length=512, label = 'Email 
> ID'),
>                 Field('nskname', length=128, default='', label = 'Machine 
> Name'),
>                 Field('nskpassword', 'password', 
> length=512,readable=False, label='Machine Password'),
>                 Field('confirmnskpassword', 'password', 
> length=512,readable=False, label='Confirm Machine Password'),
>                 Field('nreleaseid',length=128, default='',label = 
> 'Release'),
>                 Field('isCordinator','boolean',default='', label = 'Is 
> Co-ordinator'))
>
>
> db.nsksystem.email_id.requires = 
> IS_NOT_EMPTY(error_message=auth.messages.is_empty)
> db.nsksystem.email_id.requires = IS_IN_DB(db,'auth_user.email','%(email)s')
> db.nsksystem.nreleaseid.requires = 
> IS_NOT_EMPTY(error_message=auth.messages.is_empty)
> db.nsksystem.nskname.requires = 
> IS_NOT_EMPTY(error_message=auth.messages.is_empty)
> db.nsksystem.confirmnskpassword.requires = IS_EXPR('value==%s' % 
> repr(request.vars.get('nskpassword', None)),error_message='Passwords do not 
> match')
> db.nsksystem.isCordinator.requires=IS_NOT_IN_DB(db(db.nsksystem.nreleaseid 
> == request.vars.nreleaseid), 'nsksystem.isCordinator', 
> error_message='Co-ordinator Already exist for specified release')
>
> In my Controller:
>
> def uregistration(): ##---> For my user registration
>     form=SQLFORM(db.auth_user)
>     if form.process().accepted:
>         response.flash = 'User is registered. Redirecting to machine 
> registration'
>         redirect(URL('mregistration'))     #-> After registration it goes 
> to another page for machine registration.
>     elif form.errors:
>         response.flash = 'Form has errors'
>     else:
>         response.flash = 'Please fill out the form'
>     return dict(form=form)
>
>
> def mregistration():  ##---> for machine registration page
>     form=SQLFORM(db.nsksystem) 
>     if form.process().accepted:
>         response.flash = 'Machine is registered to user. Please go to 
> Login page.'
>         redirect(URL('index'))
>     elif form.errors:
>         response.flash = 'Form has errors'
>     else:
>         response.flash = 'Please fill out the form'
>     return dict(form=form)
>
> Now after I have registered the user, i am being redirected to Machine 
> registration page. After i enter all the details in Machine registration 
> page I get this error:
>
> Traceback (most recent call last):
>   File "gluon/restricted.py", line 224, in restricted
>   File "C:/web2py/applications/click/controllers/default.py" 
> <http://127.0.0.1:8000/admin/default/edit/click/controllers/default.py>, line 
> 63, in <module>
>   File "gluon/globals.py", line 393, in <lambda>
>   File "C:/web2py/applications/click/controllers/default.py" 
> <http://127.0.0.1:8000/admin/default/edit/click/controllers/default.py>, line 
> 30, in mregistration
>     if form.process().accepted:
>   File "gluon/html.py", line 2303, in process
>   File "gluon/html.py", line 2240, in validate
>   File "gluon/sqlhtml.py", line 1677, in accepts
>   File "gluon/dal/objects.py", line 724, in insert
>   File "gluon/dal/adapters/base.py", line 715, in insert
> IntegrityError: foreign key constraint failed
>
> Error snapshot  <class 'sqlite3.IntegrityError'>(foreign key constraint 
> failed)  
>       Function argument list
>       
> (self=<gluon.dal.adapters.sqlite.SQLiteAdapter object>, 
> table=<Table nsksystem 
> (id,email_id,nskname,nskpassword,confirmnskpassword,nreleaseid,isCordinator)>,
>  fields=[(<gluon.dal.objects.Field object>, '123456'), 
> (<gluon.dal.objects.Field object>, 'vodka.ind.codefactory.com'), 
> (<gluon.dal.objects.Field object>, 0), 
> (<gluon.dal.objects.Field object>, True), 
> (<gluon.dal.objects.Field object>, 'AAA'), 
> (<gluon.dal.objects.Field object>, '123456')])
>
>
> I wonder why i dont see the email address that i select in the machine 
> registration page. (<gluon.dal.objects.Field object>, 0) in the Function 
> argument list refers to email id or only ID.
>
> I am confused. Unfortunately i cant turn the constraint validation off as it 
> is a requirement.
>     
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to