from flask import Blueprint, Flask, request, flash, render_template, url_for, session, redirect, abort, make_response, send_file, escape, flash, abort from werkzeug.utils import secure_filename from PIL import Image import time import sqlite3 import os profil = Blueprint('profil', __name__, template_folder='templates') app = Flask( 'pywallter' ) app.config.from_pyfile('config.py') #### Variables #################################################################################### DOSSIER_PERSO= app.config['DOSSIER_APP'] extensionimg = app.config['EXT_IMG'] ################################################################################################## @profil.route('/profil/', methods=['GET','POST'] ) def profile() : if 'username' in session : UTILISATEUR='%s' % escape(session['username']) conn = sqlite3.connect('base.db') # Connexion à la base de donnée cursor = conn.cursor() # Création de l'objet "curseur" cursor.execute("""SELECT avatar, nom, prenom, age, mail_rescue FROM users WHERE name=?""", (UTILISATEUR,)) tmp = (cursor.fetchone()) profil_user = dict() profil_user['avatar'] = tmp[0] profil_user['nom'] = tmp[1] profil_user['prenom'] = tmp[2] profil_user['age'] = tmp[3] profil_user['mail_rescue'] = tmp[4] conn.close() if request.method == 'POST' : f = request.files['fic'] if request.form['nom']: profil_user['nom'] = request.form['nom'] if request.form['prenom']: profil_user['prenom'] = request.form['prenom'] if request.form['age']: profil_user['age'] = request.form['age'] if '@' in request.form['mail_rescue']: if len(request.form['mail_rescue']) > 4: profil_user['mail_rescue'] = request.form['mail_rescue'] else: flash(u'Adresse de courriel invalide', 'error') else: flash(u'Adresse de courriel invalide', 'error') if f: # On vérifie qu'un fichier a bien été envoyé nom = secure_filename(f.filename) f.save(DOSSIER_PERSO + UTILISATEUR + '/profile/' + nom) image = DOSSIER_PERSO + UTILISATEUR + '/profile/' + nom with Image.open(image) as img: img.tumbnails(resize='80x80') img.save(filename = DOSSIER_PERSO + UTILISATEUR + '/profile/' + nom) imagelocation = DOSSIER_PERSO + UTILISATEUR + '/profile/' + nom conn = sqlite3.connect('base.db') # Connexion à la base de donnée cursor = conn.cursor() # Création de l'objet "curseur" cursor.execute("UPDATE users SET avatar=? WHERE name=?", (imagelocation, UTILISATEUR)) conn.commit() cursor = conn.cursor() # Création de l'objet "curseur" conn.close() flash(u'Image de profil mise à jour', 'succes') else: conn = sqlite3.connect('base.db') # Connexion à la base de donnée cursor = conn.cursor() # Création de l'objet "curseur" cursor.execute("UPDATE users SET nom=?, prenom=?, age=?, mail_rescue=? WHERE name=?", (profil_user['nom'], profil_user['prenom'], profil_user['age'], profil_user['mail_rescue'], UTILISATEUR)) conn.commit() flash(u'Le profil a été mis à jour', 'succes') return render_template('profil.html', section="Profil", profil=profil_user, username=UTILISATEUR) else : return redirect(url_for('loginlogout.login', _external=True))