Code source de app.liste.route

from flask import (
    redirect,
    url_for,
    render_template,
    Blueprint,
    request,
    flash,
    jsonify,
    current_app,
)
from pypnusershub import routes as fnauth

from app.env import db
from app.liste import forms as listeforms
from app.models import TListes, CorRoleListe, TRoles
from app.utils.utils_all import strigify_dict

[docs] URL_REDIRECT = current_app.config["URL_REDIRECT"]
[docs] URL_APPLICATION = current_app.config["URL_APPLICATION"]
[docs] route = Blueprint("liste", __name__)
@route.route("lists/list", methods=["GET", "POST"]) @fnauth.check_auth( 3, )
[docs] def lists(): """ Route qui affiche la liste des listes Retourne un template avec pour paramètres : - une entête de tableau --> fLine - le nom des colonnes de la base --> line - le contenu du tableau --> table - le chemin de mise à jour --> pathU - le chemin de suppression --> pathD - le chemin d'ajout --> pathA - le chemin des membres de la liste --> pathP - une clé (clé primaire dans la plupart des cas) --> key - un nom (nom de la table) pour le bouton ajout --> name - un nom de liste --> name_list - ajoute une colonne de bouton ('True' doit être de type string)--> otherCol - nom affiché sur le bouton --> Members """ fLine = ["ID", "Code", "Nom", "Description"] columns = ["id_liste", "code_liste", "nom_liste", "desc_liste"] contents = TListes.get_all(order_by="nom_liste") return render_template( "table_database.html", fLine=fLine, line=columns, table=contents, key="id_liste", pathI=URL_APPLICATION + "/list/info/", pathU=URL_APPLICATION + "/list/update/", pathD=URL_APPLICATION + "/list/delete/", pathA=URL_APPLICATION + "/list/add/new", pathP=URL_APPLICATION + "/list/members/", name="une liste", name_list="Listes", otherCol="True", Members="Membres", see="True", )
@route.route("list/add/new", defaults={"id_liste": None}, methods=["GET", "POST"]) @route.route("list/update/<id_liste>", methods=["GET", "POST"]) @fnauth.check_auth( 6, )
[docs] def addorupdate(id_liste): """ Route affichant un formulaire vierge ou non (selon l'url) pour ajouter ou mettre à jour une liste L'envoie du formulaire permet l'ajout ou la maj de la liste dans la base Retourne un template accompagné d'un formulaire pré-rempli ou non selon le paramètre id_liste Une fois le formulaire validé on retourne une redirection vers la liste des listes """ form = listeforms.List() if id_liste == None: if request.method == "POST": if form.validate_on_submit() and form.validate(): form_list = pops(form.data) form_list.pop("id_liste") TListes.post(form_list) return redirect(url_for("liste.lists")) return render_template("list.html", form=form, title="Formulaire Liste") else: list = TListes.get_one(id_liste) if request.method == "GET": form = process(form, list) if request.method == "POST": if form.validate_on_submit() and form.validate(): form_list = pops(form.data) form_list["id_liste"] = list["id_liste"] TListes.update(form_list) return redirect(url_for("liste.lists")) else: flash(strigify_dict(form.errors)) return render_template("list.html", form=form, title="Formulaire Liste")
@route.route("list/members/<id_liste>", methods=["GET", "POST"]) @fnauth.check_auth( 6, )
[docs] def membres(id_liste): """ Route affichant la liste des listes n'appartenant pas à la liste vis à vis de ceux qui appartiennent à celle-ci. Avec pour paramètre un id de liste (id_liste) Retourne un template avec pour paramètres: - une entête des tableaux --> fLine - le nom des colonnes de la base --> data - liste des listes n'appartenant pas à la liste --> table - liste des listes appartenant à la liste --> table2 """ users_in_list = TRoles.test_group(TRoles.get_user_in_list(id_liste)) users_out_list = TRoles.test_group(TRoles.get_user_out_list(id_liste)) mylist = TListes.get_one(id_liste) header = ["ID", "Nom"] data = ["id_role", "full_name"] if request.method == "POST": data = request.get_json() new_users_in_list = data["tab_add"] new_users_out_list = data["tab_del"] try: CorRoleListe.add_cor(id_liste, new_users_in_list) CorRoleListe.del_cor(id_liste, new_users_out_list) except Exception as e: return jsonify({"error": str(e)}), 500 return jsonify({"redirect": url_for("liste.lists")}), 200 return render_template( "tobelong.html", fLine=header, data=data, table=users_out_list, table2=users_in_list, info="Membres de la liste '" + mylist["nom_liste"] + "'", )
@route.route("list/delete/<id_liste>", methods=["GET", "POST"]) @fnauth.check_auth( 6, )
[docs] def delete(id_liste): """ Route qui supprime une liste dont l'id est donné en paramètres dans l'url Retourne une redirection vers la liste des listes """ TListes.delete(id_liste) return redirect(url_for("liste.lists"))
@route.route("list/info/<id_liste>", methods=["GET"]) @fnauth.check_auth(3)
[docs] def info(id_liste): mylist = TListes.get_one(id_liste) members = ( db.session.query(CorRoleListe).filter(CorRoleListe.id_liste == id_liste).all() ) return render_template("info_list.html", mylist=mylist, members=members)
[docs] def pops(form): """ Methode qui supprime les éléments indésirables du formulaires Avec pour paramètre un formulaire """ form.pop("submit") form.pop("csrf_token") return form
[docs] def process(form, list): """ Methode qui rempli le formulaire par les données de l'éléments concerné Avec pour paramètres un formulaire et une liste """ form.nom_liste.process_data(list["nom_liste"]) form.code_liste.process_data(list["code_liste"]) form.desc_liste.process_data(list["desc_liste"]) return form