示例#1
0
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)
示例#2
0
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()
示例#3
0
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(" ", ""))
示例#4
0
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)
示例#5
0
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(" ", ""))
示例#6
0
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)
示例#7
0
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)
示例#8
0
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)
示例#9
0
#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 ==================================================================
# ============================================================================================================