I set up a mock app to help someone solve a problem.
In db.py I defined these two tables after all the mail, auth and crud
stuff:
db.define_table('mockbio',
Field('unique_id',type='integer',unique=True,writable=False,readable=True),
Field('first_name',length=24),
Field('last_name',length=72),
migrate='mockbio.table')
db.mockbio.unique_id.default=auth.user_id
db.mockbio.unique_id.requires=IS_NOT_IN_DB(db,db.bio.unique_id)
db.mockbio.unique_id.label=T('Unique_id')
Using web2py's administrative interface I am able to enter a record
for each user I created, when I enter a second record for a user I get
an error on the unique_id field: value already in database or empty.
I also defined two functions in default.py:
@auth.requires_login()
def create_mockbio_first():
form=crud.create(table=db.mockbio)
return dict(form=form)
@auth.requires_login()
def create_mockbio_second():
form=SQLFORM(db.mockbio)
if form.accepts(request.vars, session):
session.flash = 'form accepted'
elif form.errors:
response.flash = 'form has errors'
else:
response.flash = 'please fill the form'
return dict(form=form)
When I expose the functions, I can create a record for the logged in
user once, when I try to create a second record for the same user an
error ticket is issued: IntegrityError: column unique_id is not unique
Why do I get an error ticket instead of an error message in the form?
Kind regards,
Annet