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.

Reply via email to