Code source de app.bib_organismes.route

"""
Route des Organismes
"""

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

from pypnusershub import routes as fnauth

from app import genericRepository
from app.bib_organismes import forms as bib_organismeforms
from app.models import Bib_Organismes, 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("organisme", __name__)
@route.route("organisms/list", methods=["GET", "POST"]) @fnauth.check_auth( 3, )
[docs] def organisms(): """ Route qui affiche la liste des Organismes 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 de la page d'information --> pathI - 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 pour accéder aux infos de l'utilisateur --> see """ fLine = [ "ID", "Nom", "Adresse", "Code postal", "Ville", "Telephone", "Fax", "Email", ] columns = [ "id_organisme", "nom_organisme", "adresse_organisme", "cp_organisme", "ville_organisme", "tel_organisme", "fax_organisme", "email_organisme", ] contents = Bib_Organismes.get_all(columns, order_by="nom_organisme") return render_template( "table_database.html", table=contents, fLine=fLine, line=columns, key="id_organisme", pathI=URL_APPLICATION + "/organism/info/", pathU=URL_APPLICATION + "/organism/update/", pathD=URL_APPLICATION + "/organisms/delete/", pathA=URL_APPLICATION + "/organism/add/new", name="un organisme", name_list="Organismes", see="True", )
@route.route( "organism/add/new", defaults={"id_organisme": None}, methods=["GET", "POST"] ) @route.route("organism/update/<id_organisme>", methods=["GET", "POST"]) @fnauth.check_auth( 6, )
[docs] def addorupdate(id_organisme): """ Route affichant un formulaire vierge ou non (selon l'url) pour ajouter ou mettre à jour un organisme L'envoie du formulaire permet l'ajout ou la mise à jour de l'éléments dans la base Retourne un template accompagné du formulaire Une fois le formulaire validé on retourne une redirection vers la liste d'organisme """ form = bib_organismeforms.Organisme() if id_organisme == None: if request.method == "POST": if form.validate_on_submit() and form.validate(): form_org = pops(form.data) form_org.pop("id_organisme") Bib_Organismes.post(form_org) return redirect(url_for("organisme.organisms")) else: flash(strigify_dict(form.errors), "error") else: org = Bib_Organismes.get_one(id_organisme) if request.method == "GET": form = bib_organismeforms.Organisme(**org) if request.method == "POST": if form.validate_on_submit() and form.validate(): form_org = pops(form.data) form_org["id_organisme"] = org["id_organisme"] Bib_Organismes.update(form_org) return redirect(url_for("organisme.organisms")) else: flash(strigify_dict(form.errors), "error") return render_template("organism.html", form=form, title="Formulaire Organisme")
@route.route("organisms/delete/<id_organisme>", methods=["GET", "POST"]) @fnauth.check_auth( 6, )
[docs] def delete(id_organisme): """ Route qui supprime un organisme dont l'id est donné en paramètres dans l'url Retourne une redirection vers la liste d'organismes """ Bib_Organismes.delete(id_organisme) return redirect(url_for("organisme.organisms"))
@route.route("organism/info/<id_organisme>", methods=["GET"]) @fnauth.check_auth( 3, )
[docs] def info(id_organisme): org = Bib_Organismes.get_one(id_organisme) q = TRoles.get_all( as_model=True, params=[ {"col": "active", "filter": True}, {"col": "id_organisme", "filter": id_organisme}, ], order_by="nom_role", ) users = [data.as_dict_full_name() for data in q] return render_template("info_organisme.html", org=org, users=users)
[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