In a controller I have got the following form function:
def create_form():
response.view='form.html'
form=SQLFORM.factory(
Field('bedrijfsnaam',length=54,requires=IS_NOT_EMPTY()),
Field('kvk_nummer',length=8),
Field('subdossiernummer',length=4,default='0000'),
Field('rechtsvorm',requires=IS_IN_DB(db,db.rechtsvorm.rechtsvorm,'%
(rechtsvorm)s',zero=None)),
Field('adressoort',requires=IS_IN_DB(db,db.adressoort.id,'%
(soort)s',orderby=db.adressoort.id,zero=None)),
Field('straat',length=42,requires=IS_NOT_EMPTY()),
Field('huisnummer',length=9,requires=IS_NOT_EMPTY()),
Field('huisnummerextensie',length=6,default=''),
Field('postcode_cijferdeel',type='integer',requires=IS_NOT_EMPTY()),
Field('postcode_letterdeel',length=2,requires=IS_NOT_EMPTY()),
Field('plaats',requires=IS_NOT_EMPTY(),widget=SQLFORM.widgets.autocomplete(request,db.plaats.plaats,min_length=2)),
Field('telefoonnummer',length=72),
Field('faxnummer',length=72),
Field('mobielnummer',length=72),
Field('email',length=72),
Field('website',length=72),
Field('inschrijving',length=24,requires=IS_IN_DB(db,db.inschrijving.id,'%
(inschrijving)s',zero=None)))
form[0].insert(0,TR(H4('Bedrijfsgegevens:')))
form[0][2][2].insert(0,A('already in
database?',_onmouseover="this.style.cursor='pointer';",\
_onclick="javascript:details('%s/'+$
('input[name=kvk_nummer]').val()+'/'+$
('input[name=subdossiernummer]').val())"%URL(r=request,f='retrieve')))
form[0].insert(5,TR(H4('Adresgegevens:')))
form[0].insert(13,TR(H4('Communicatiegegevens:')))
form[0].insert(19,TR(H4('Inschrijvinggegevens:')))
form[0][-1][1].append(INPUT(_type='reset',_value='Reset'))
if form.accepts(request.vars,session):
row=db((db.bedrijf.kvk_nummer==form.vars.kvk_nummer)&(db.bedrijf.subdossiernummer==form.vars.subdossiernummer))
\
.select(db.bedrijf.id)
if row:
response.flash='Bedrijf al in database onder id: ' +
str(row[0].id)
else:
id=db.bedrijf.insert(bedrijfsnaam=form.vars.bedrijfsnaam,kvk_nummer=form.vars.kvk_nummer,
\
subdossiernummer=form.vars.subdossiernummer,rechtsvorm=form.vars.rechtsvorm)
db.adres.insert(bedrijf_id=id,adressoort_id=form.vars.adressoort,straat=form.vars.straat,
\
huisnummer=form.vars.huisnummer,huisnummerextensie=form.vars.huisnummerextensie,
\
postcode_cijferdeel=form.vars.postcode_cijferdeel,postcode_letterdeel=form.vars.postcode_letterdeel,
\
plaats=form.vars.plaats)
if form.vars.telefoonnummer:
db.nfa.insert(bedrijf_id=id,nfatype_id=1,adres=form.vars.telefoonnummer)
if form.vars.faxnummer:
db.nfa.insert(bedrijf_id=id,nfatype_id=2,adres=form.vars.faxnummer)
if form.vars.mobielnummer:
db.nfa.insert(bedrijf_id=id,nfatype_id=3,adres=form.vars.mobielnummer)
if form.vars.email:
db.nfa.insert(bedrijf_id=id,nfatype_id=4,adres=form.vars.email)
row=db(db.contactpersoon.email==form.vars.email).select()
if row:
db.bedrijfcontactpersoon.insert(bedrijf_id=id,contactpersoon_id=row[0].id)
else:
persoon_id=db.contactpersoon.insert(aanhef='None',email=form.vars.email,subscription=True)
db.bedrijfcontactpersoon.insert(bedrijf_id=id,contactpersoon_id=persoon_id)
if form.vars.website:
db.nfa.insert(bedrijf_id=id,nfatype_id=5,adres=form.vars.website)
db.bedrijfinschrijving.insert(bedrijf_id=id,inschrijving_id=form.vars.inschrijving)
response.flash='records inserted'
elif form.errors:
response.flash=response.flash_formerror
return dict(form=form)
When I click the submit button, the form's behaviour isn't consistent.
Given the form validates and the records inserted flash displays, the
data are not always inserted into the database tables. Since I can not
find any pattern in this behaviour I wonder whether there is something
wrong with the form.
Kind regards,
Annet.