def downloadUser(campagneid): #Le tableau[-1] signifie que l'on prendra toujours le dernier tableau créé rows = [ jsonParsing(user[0]) for user in req.selectFromTable("chemin", "Chemin", "campagneid =" + str(campagneid)).fetchall() ] #Liste des noms des participants à la campagne token = [ user for user in req.selectFromTable("token", "Chemin", "campagneid =" + str(campagneid)).fetchall() ] #La fonction buildIndic récupere le tableau des données, et construit des indicateurs avec. indics = [buildIndic(indic) for indic in rows] #Création du path du fichier excel de chemin stocké excelPath = UPLOAD_FOLDER + '/Session/' + str( campagneid) + '/' + "Campagne_" + str(campagneid) + '.xlsx' with open(excelPath, 'w') as outfile: jsonToExcelAll(rows, indics, campagneid, excelPath, token) return send_file(excelPath, "Campagne_" + str(campagneid), as_attachment=True)
def delete(campagneid): #Suppression des chemins de résolutions pour les sessions liées à la campagne. Les chemins sont stockés #dans les dossiers du repertoire Session portant le numéro de la campagne if os.path.exists(UPLOAD_FOLDER + '/Session/' + str(campagneid)): shutil.rmtree(UPLOAD_FOLDER + '/Session/' + str(campagneid)) #Suppression des fichiers et dossiers liés aux campagnes os.remove( req.selectFromTable("Pathfile", "campagne", "id =" + str(campagneid)).fetchone()[0]) #Suppression du stockage des images et du fichier Drawning1.xml, si il y a des images if os.path.exists('static/img/Campagne_' + str(campagneid)): shutil.rmtree('static/img/Campagne_' + str(campagneid)) #Supression de la campagne et des sessions de la base de donnée req.deleteFromTable("Chemin", "campagneid = " + str(campagneid)) #Supression de la session et des chemins de la base de donnée req.deleteFromTable("Session", "campagneid = " + str(campagneid)) #Supression de la campagne et des sessions de la base de donnée req.deleteFromTable("campagne", "id = " + str(campagneid)) #Rechargement de la page return campagne()
def form2(campagneid, token): form2 = req.selectFromTable("form2", "campagne", "id =" + str(campagneid)).fetchone()[0] return render_template("Form_2.html", campagneid=campagneid, token=token, form2=form2.replace(" ", ""))
def chemin(cheminid, campagneid): #Selection du JSon d'un chemin rows = jsonParsing( str( req.selectFromTable("chemin", "Chemin", "cheminid =" + str(cheminid)).fetchone()[0])) #La fonction buildIndic récupere le tableau des données, et construit des indicateurs avec. indics = buildIndic(rows) token = req.selectFromTable("token", "Chemin", "cheminid =" + str(cheminid)).fetchone()[0] return render_template("Chemin.html", rows=rows, indics=indics, cheminid=cheminid, campagneid=campagneid, token=token)
def form1(campagneid): token = "C" + str(campagneid) + "ID" + binascii.hexlify(os.urandom(3)) req.insertIntoSession(token, campagneid) form1 = req.selectFromTable("form1", "campagne", "id=" + str(campagneid)).fetchone()[0] return render_template("Form_1.html", campagneid=campagneid, token=token, form1=form1.replace(" ", ""))
def detailCampagne(campagneid): #Récupération du chemin d'accés vers le fichier Excel chemin = req.selectFromTable("Pathfile", "campagne", "id =" + str(campagneid)).fetchone()[0] name = req.selectFromTable("nom", "campagne", "id =" + str(campagneid)).fetchone()[0] countdown = int( req.selectFromTable("countdown", "campagne", "id =" + str(campagneid)).fetchone()[0]) #Construction du tableau grâce au script python tableIDB.python #Le tableau[-1] signifie que l'on prendra toujours le dernier tableau créé rows = parseExcel(str(chemin), campagneid).tableau[-1].dic return render_template("InformationBoard.html", rows=rows, name=name, countdown=countdown)
def upload_file(): if is_logged_in(): form = FormCampagne(request.form) if request.method == 'POST': # check if the post request has the file part if 'file' not in request.files: flash('No file part') return redirect(request.url) file = request.files['file'] # if user does not select file, browser also # submit a empty part without filename if file.filename == '': flash('No selected file') return redirect(request.url) #Si tout se passe bien : Alors on upload le fichier, et on peuple la base de donnée if file and allowed_file(file.filename): if form.nom.data not in req.selectFromTable( "nom", "campagne").fetchall(): #Le nom du fichier est identifiant aleatoire filename = binascii.hexlify(os.urandom(16)) #Si les repertoires n'existent pas alors il sont créés if not os.path.exists(UPLOAD_FOLDER + "/ExcelFile"): os.makedirs(UPLOAD_FOLDER + "/ExcelFile") req.insertIntoCampagne( form.nom.data, os.path.join(UPLOAD_FOLDER + "/ExcelFile", filename), form.countdown.data, form.form1.data, form.form2.data) file.save( os.path.join(UPLOAD_FOLDER + "/ExcelFile", filename)) return redirect("/Campagne", code=302) else: return redirect("/login", code=302) return render_template("CreationDeCampagne.html", form=form)
def download(campagneid, cheminid): #Selection du JSon d'un chemin rows = jsonParsing( req.selectFromTable("chemin", "Chemin", "cheminid =" + str(cheminid)).fetchone()[0]) #La fonction buildIndic récupere le tableau des données, et construit des indicateurs avec. indics = buildIndic(rows) #Création du path du fichier excel de chemin stocké excelPath = UPLOAD_FOLDER + '/Session/' + str( campagneid) + '/' + binascii.hexlify(os.urandom(16)) + '.xlsx' with open(excelPath, 'w') as outfile: jsonToExcel(rows, indics, campagneid, excelPath) return send_file(excelPath, "Chemin_" + str(cheminid), as_attachment=True)
#Definition du repertoire d'uploads app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # Controller l'extension de fichier def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS #Configuration de la session Flask app.config['SECRET_KEY'] = 'something-secret' #Pour le moment, et pour des raisons de test, il n'y a qu'un seul compte admin app.config['SIMPLELOGIN_USERNAME'] = req.selectFromTable("login", "Admin").fetchone()[0] app.config['SIMPLELOGIN_PASSWORD'] = base64.b64decode( req.selectFromTable("password", "Admin").fetchone()[0]) # =================================== Login ================================================================== # ============================================================================================================ #Page de login de l'administrateur @app.route('/login') def login(): return render_template("login.html") # =================================== Index ================================================================== # ============================================================================================================