Beispiel #1
0
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)