Code source de app.t_profils.route

from flask import (
    redirect,
    url_for,
    render_template,
    Blueprint,
    request,
    flash,
    current_app,
)

from pypnusershub import routes as fnauth

from app.t_profils import forms as t_profilsforms
from app.models import (
    TProfils,
    TApplications,
    CorProfilForApp,
    TRoles,
    Bib_Organismes,
    CorRoleAppProfil,
)

[docs] URL_REDIRECT = current_app.config["URL_REDIRECT"]
[docs] URL_APPLICATION = current_app.config["URL_APPLICATION"]
[docs] route = Blueprint("profils", __name__)
""" Routes des profils """ @route.route("profils/list", methods=["GET", "POST"]) @fnauth.check_auth( 3, )
[docs] def profils(): """ Route qui affiche la liste des profils 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 roles du profil --> 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 listes --> 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_profil", "code_profil", "nom_profil", "desc_profil"] tab = [data for data in TProfils.get_all(order_by="nom_profil")] return render_template( "table_database.html", fLine=fLine, line=columns, table=tab, key="id_profil", pathU=URL_APPLICATION + "/profil/update/", pathD=URL_APPLICATION + "/profil/delete/", pathA=URL_APPLICATION + "/profil/add/new", name="un profil", name_list="Profils", otherCol="False", profil_app="True", App="Application", )
@route.route("profil/delete/<id_profil>", methods=["GET", "POST"]) @fnauth.check_auth( 6, )
[docs] def delete(id_profil): """ Route qui supprime un profil dont l'id est donné en paramètres dans l'url Retourne une redirection vers la liste de profil """ TProfils.delete(id_profil) return redirect(url_for("profils.profils"))
@route.route("profil/add/new", defaults={"id_profil": None}, methods=["GET", "POST"]) @route.route("profil/update/<id_profil>", methods=["GET", "POST"]) @fnauth.check_auth( 6, )
[docs] def addorupdate(id_profil): """ Route affichant un formulaire vierge ou non (selon l'url) pour ajouter ou mettre à jour un profil L'envoie du formulaire permet l'ajout ou la maj du profil dans la base Retourne un template accompagné d'un formulaire pré-rempli ou non selon le paramètre id_profil Une fois le formulaire validé on retourne une redirection vers la liste de profil """ form = t_profilsforms.Profil() if id_profil == None: if request.method == "POST": if form.validate() and form.validate_on_submit(): form_profil = pops(form.data) form_profil.pop("id_profil") TProfils.post(form_profil) return redirect(url_for("profils.profils")) return render_template("profil.html", form=form, title="Formulaire Profil") else: profil = TProfils.get_one(id_profil) if request.method == "GET": form = process(form, profil) if request.method == "POST": if form.validate() and form.validate_on_submit(): form_profil = pops(form.data) form_profil["id_profil"] = profil["id_profil"] TProfils.update(form_profil) return redirect(url_for("profils.profils")) return render_template("profil.html", form=form, title="Formulaire Profil")
[docs] def pops(form): """ Methode qui supprime les éléments indésirables du formulaires Avec pour paramètre un formulaire """ form.pop("csrf_token") form.pop("submit") return form
[docs] def process(form, profil): """ Methode qui rempli le formulaire par les données de l'éléments concerné Avec pour paramètres un formulaire et un profil """ form.nom_profil.process_data(profil["nom_profil"]) form.code_profil.process_data(profil["code_profil"]) form.desc_profil.process_data(profil["desc_profil"]) return form