Hello Massimo,

I think I am onto something !

I have modified my model as follows :
defaultfoto = [ 'defaultuser.png','defaultplayer.png','defaultcoach.png']

defaultuserpics =   { 0:IMG(_src=URL('static','images/'+ defaultfoto[0])),
                      1:IMG(_src=URL('static','images/'+ defaultfoto[1])),
                      2:IMG(_src=URL('static','images/'+ defaultfoto[2])),
                      3:DIV(_class='previewpic')}   




I tweaked my code a bit ! and I am happy to say that I have made some 
progress !
the controller now looks as follows :
def register():
       import os
       STEPS = {0: ('Iagreeto','first_name','last_name','email',
'email_check','password','sex','birth_date','usertype','user_adress',
'user_city','user_prov','user_postalcode','Country'),
                1: ('the_user','user_speaks','more_Lang','user_image',
'user_picture','user_description','user_soccerstory'),  #  final step
                2: URL('user',args='profile')} 
         
       step = int(request.args(0) or 0)
       if not step in STEPS: redirect(URL(args=0))
       fields = STEPS[step]
       if step==0:
          session.register = {} 
       if isinstance(fields,tuple):
          mytables = ['auth_user','user_info']
          form_fields = []
          [form_fields.extend([db[t][f] for f in db[t].fields if f in fields
]) for t in mytables]
          form = SQLFORM.factory(*form_fields)         
          if form.accepts(request,session):
             session.register.update(form.vars)
             db.auth_user.insert(**db.auth_user._filter_fields(session.
register))
             db.user_info.insert(**db.user_info._filter_fields(session.
register))
             redirect(URL(args=step+1))
       else :
          for n in xrange (0, 3): 
                if db.user_info.the_user_image == defaultuserpics[n]: 
                   db.user_info.user_picture.default = lambda: open(os.path.
join(request.folder, 'static','images/'+ defaultfoto[n]), 'rb')         
          db.user_info.insert(**db.user_info._filter_fields(session.register
))
          session.flash = T('Signup completed')
          redirect(fields)
       return dict(form=form,step=step) 


I checked and the data makes it to both tables but even when the form is 
not fully process !
I get an error at the end.  in one of my test run it tells me
<class '_mysql_exceptions.IntegrityError'> (1062, "Duplicate entry 
'za...@home.net' for key 'email'")


How do I tweak the above code to avoid that duplicate entry attempt in the 
tables ... i wonder where could this have happen ??? ...  I only affected 
the auth_user table once !!
could it be the "the_user" field which is a db.auth_user type ??? ...

thank you

Don

-- 



Reply via email to