def person_add(): person_form = PersonForm() recipient_list = Recipient.query.all() print('<person_add Method>', request.method) if request.method == 'POST': data = request.form try: person_data = {} if data: for d in data: print("key {}, type {}, data {}".format( d, type(data.getlist(d)), data.getlist(d))) if hasattr(Person, d) and data[d] != '': if len(data.getlist(d)) == 1: person_data[d] = data[d] else: person_data[d] = '; '.join(data.getlist(d)) # Convert Date string to python datetime object person_data['arrival_date'] = datetime.strptime( person_data['arrival_date'], '%Y-%m-%d').date() if 'departure_date' in person_data.keys(): person_data['departure_date'] = datetime.strptime( person_data['departure_date'], '%Y-%m-%d').date() new_person = Person(**person_data) new_person.save_to_db() id = new_person.id_person print('<person_add id>', id) print('<person_row>', new_person) flash('Merci pour cette participation') new_person_dict = dict( (col, getattr(new_person, col)) for col in new_person.__table__.columns.keys()) print('<new_person_dict 1>', type(new_person_dict), new_person_dict) for k, v in new_person_dict.items(): print(k, v) if new_person_dict[k] == None: print(k) new_person_dict[k] = 'Non défini' print('<new_person_dict 2>', new_person_dict) for recipient in recipient_list: sendmail(recipient.subject, recipient.body, recipient.email, new_person_dict) sendmail( "Déclaration d'une nouvelle arrivée", "Votre déclaration pour {} {} a bien été transmise. \n\n[Ceci est un message automatique]" .format(new_person.name, new_person.surname), new_person.email_referent, person_data) except Exception as e: flash(e) print("<person_add error>", e) return render_template("person_form.html", form=person_form, recipients=recipient_list) return redirect(url_for('main.person', id=id)) return render_template("person_form.html", form=person_form, recipients=recipient_list)