diff options
| -rw-r--r-- | famille.py | 38 | ||||
| -rw-r--r-- | schema.sql | 11 | ||||
| -rw-r--r-- | templates/user/edit.html | 57 | ||||
| -rw-r--r-- | templates/user/show.html | 15 |
4 files changed, 119 insertions, 2 deletions
@@ -127,7 +127,39 @@ def edit_news(news_id): @app.route('/user/<int:user_id>/') @login_required def view_user(user_id): - pass + user = query_db('SELECT * FROM users WHERE id= ?', (session['user_id'],), True) + return render_template("user/show.html", user=user) + +@app.route('/user/edit/', methods=['GET', 'POST']) +@login_required +def edit_user(): + if request.method == 'GET': + user = query_db('SELECT * FROM users WHERE id= ?', (session['user_id'],), + True) + user = {k: user[k] for k in user.keys() if user[k]} + return render_template("user/edit.html", user=user) + elif request.method == 'POST': + result = {} + try: + if request.form['password'] == request.form['password_confirm']: + result['password'] =hashlib.md5(request.form['password']).hexdigest() + else: + error = u"Les deux mots de passe ne coïncident pas" + return render_template("user/edit.html", user=request.form, + error=error) + except KeyError: + pass + result["notify"] = 1 if "notify" in request.form else 0 + for key in ['email', 'phone', 'birthday', 'nameday', 'address_line1', + 'address_line2', 'address_city_line']: + result[key] = request.form[key].encode("utf8") + set_string = ",".join("'{}'='{}'".format(key, value) + for key,value in result.iteritems()) + print set_string + g.db.execute("UPDATE users SET {} where id=?".format(set_string), + (session['user_id'],)) + g.db.commit() + return redirect(url_for('view_user', user_id=session['user_id'])) @app.route('/login/', methods=['GET', 'POST']) def login(): @@ -143,6 +175,10 @@ def login(): if user['password'] == password: session['user_name'] = user['user_name'] session['user_id'] = user['id'] + g.db.execute("UPDATE users SET last_seen=? WHERE id=?", + (datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ"), + session['user_id'])) + g.db.commit() return redirect(url_for('list_news')) else: error = u'Mot de passe incorrect' @@ -2,7 +2,16 @@ drop table if exists users; create table users ( id integer primary key autoincrement, user_name string not null, - password string not null + password string not null, + last_seen string default (strftime('%Y-%m-%dT%H:%M:%SZ','now')), + birthday string, + nameday string, + notify boolean default 1, + email string, + phone string, + address_line1, + address_line2, + address_city_line ); drop table if exists news; diff --git a/templates/user/edit.html b/templates/user/edit.html new file mode 100644 index 0000000..e9d151a --- /dev/null +++ b/templates/user/edit.html @@ -0,0 +1,57 @@ +{% extends 'layout.html' %} + +{% block content %} +<form method="post" action="{{url_for('edit_user')}}" class="userform"> +<fieldset> +<legend>Paramètres</legend> +<p class="info">Laisser les champs vides si vous ne souhaitez pas changer de mot de passe.</p> + +<p> +<label for="password">Nouveau mot de passe :</label> +<input type="password" name="password" id="password"/><br/> + +<label for="confirm">Répéter le mot de passe :</label> +<input type="password" name="password_confirm" id="confirm"/><br/> + +<label for="notify">Recevoir un mail lors<br/>d'une nouvelle actualité:</label> +<input type="checkbox" name="notify" id="notify" {% if user.notify %}checked="checked"{% endif %} /> <br/> +</p> +</fieldset> + +<fieldset> +<legend>Contact</legend> + +<p> +<label for="email">Email <span class="info">(pour la famille)</span> :</label> +<input type="text" id="email" name="email" size="25" value="{{user.email}}"/><br /> + +<label for="phone">Téléphone :</label> +<input type="text" id="phone" name="phone" size="15" value="{{user.phone}}"/><br /> + +<label for="line1">Adresse <span class="info">(ligne 1)</span> :</label> +<input type="text" id="line1" size="30" name="address_line1" value="{{user.address_line1}}"/><br /> + +<label for="line2">Adresse <span class="info">(ligne 2)</span> :</label> +<input type="text" id="line2" size="30" name="address_line2" value="{{user.address_line2}}"/><br /> + +<label for="city_line">Ville, CP <span class="info">(dernière ligne)</span> :</label> +<input type="text" id="city_line" size="30" name="address_city_line" value="{{user.address_city_line}}"/><br /> +</p> +</fieldset> + +<fieldset> +<legend>Informations personelles</legend> + +<p> +<label for="birthday">Anniversaire <span class="info">(JJ/MM)</span> :</label> +<input type="text" id="birthday" name="birthday" size="5" value="{{user.birthday}}" /><br/> + +<label for="nameday">Fête <span class="info">(JJ/MM)</span> :</label> +<input type="text" id="nameday" name="nameday" size="5" value="{{user.nameday}}" /><br/> +</p> +</fieldset> +<p class="submit"><input type="submit" id="submit" value="Enregistrer"/></p> +</form> + + +{% endblock %} diff --git a/templates/user/show.html b/templates/user/show.html new file mode 100644 index 0000000..ef70a08 --- /dev/null +++ b/templates/user/show.html @@ -0,0 +1,15 @@ +{% extends "layout.html" %} + +{% block content %} +<h1>{{user.user_name}}</h1> + +<table> + <tr><th>Email</th><td>{{user.email or ""}}</td></tr> + <tr><th>Téléphone</th><td>{{user.phone or ""}}</td></tr> + <tr><th>Anniversaire</th><td>{{user.birthday or ""}}</td></tr> + <tr><th>Fête</th><td>{{user.nameday or ""}}</td></tr> + <tr><th>Adresse</th><td>{{user.address_line1 or ""}}<br/> + {{user.address_line2 or ""}}<br/> + {{user.address_city_line or ""}}</td></tr> + <tr><th>Dernière connexion</th><td>{{user.last_seen|format_date}}</td></tr> +{% endblock %} |
