From 3e2127551826e099ab6dc1045d8140a629bfe62e Mon Sep 17 00:00:00 2001 From: Arthur ZHU Date: Wed, 2 Feb 2022 19:13:50 +0100 Subject: [PATCH] ajout page historique, suite validation --- app/entreprises/routes.py | 59 +++++++++++++++---- app/static/css/entreprises.css | 21 +++++++ app/templates/entreprises/contacts.html | 2 + app/templates/entreprises/entreprises.html | 2 + .../entreprises/entreprises_validation.html | 4 +- .../entreprises/fiche_entreprise.html | 2 +- .../entreprises/logs_entreprise.html | 37 ++++++++++++ app/templates/entreprises/nav.html | 11 ++++ app/templates/entreprises/offres_recues.html | 2 + 9 files changed, 127 insertions(+), 13 deletions(-) create mode 100644 app/templates/entreprises/logs_entreprise.html create mode 100644 app/templates/entreprises/nav.html diff --git a/app/entreprises/routes.py b/app/entreprises/routes.py index 48e6661d..55c4ff4e 100644 --- a/app/entreprises/routes.py +++ b/app/entreprises/routes.py @@ -80,7 +80,7 @@ def logs(): @bp.route("/validation", methods=["GET"]) @permission_required(Permission.RelationsEntreprisesValidate) -def validation_entreprise(): +def validation(): """ Permet d'afficher une page avec la liste des entreprises a valider """ @@ -166,6 +166,29 @@ def fiche_entreprise(id): ) +@bp.route("/logs/", methods=["GET"]) +@permission_required(Permission.RelationsEntreprisesView) +def logs_entreprise(id): + """ + Permet d'afficher les logs (toutes les entreprises) + """ + page = request.args.get("page", 1, type=int) + entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404() + logs = ( + EntrepriseLog.query.order_by(EntrepriseLog.date.desc()) + .filter_by(object=id) + .paginate(page=page, per_page=20) + ) + if logs is None: + abort(404) + return render_template( + "entreprises/logs_entreprise.html", + title=("Logs"), + logs=logs, + entreprise=entreprise, + ) + + @bp.route("/fiche_entreprise_validation/", methods=["GET"]) @permission_required(Permission.RelationsEntreprisesValidate) def fiche_entreprise_validation(id): @@ -281,15 +304,22 @@ def add_entreprise(): service=form.service.data.strip(), ) db.session.add(contact) - nom_entreprise = f"{entreprise.nom}" - log = EntrepriseLog( - authenticated_user=current_user.user_name, - text=f"{nom_entreprise} - Création de la fiche entreprise ({entreprise.nom}) avec un contact", - ) - db.session.add(log) - db.session.commit() - flash("L'entreprise a été ajouté à la liste.") - return redirect(url_for("entreprises.index")) + if current_user.has_permission(Permission.RelationsEntreprisesValidate, None): + entreprise.visible = True + nom_entreprise = f"{entreprise.nom}" + log = EntrepriseLog( + authenticated_user=current_user.user_name, + text=f"{nom_entreprise} - Création de la fiche entreprise ({entreprise.nom}) avec un contact", + ) + db.session.add(log) + db.session.commit() + flash("L'entreprise a été ajouté à la liste.") + return redirect(url_for("entreprises.index")) + else: + entreprise.visible = False + db.session.commit() + flash("L'entreprise a été ajouté à la liste pour la validation.") + return redirect(url_for("entreprises.index")) return render_template( "entreprises/ajout_entreprise.html", title=("Ajout entreprise avec contact"), @@ -398,8 +428,15 @@ def validate_entreprise(id): entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404() if form.validate_on_submit(): entreprise.visible = True + nom_entreprise = f"{entreprise.nom}" + log = EntrepriseLog( + authenticated_user=current_user.user_name, + text=f"{nom_entreprise} - Validation de la fiche entreprise ({entreprise.nom}) avec un contact", + ) + db.session.add(log) db.session.commit() - return redirect(url_for("entreprises.fiche_entreprise", id=entreprise.id)) + flash("L'entreprise a été validé et ajouté à la liste.") + return redirect(url_for("entreprises.index")) return render_template( "entreprises/validate_confirmation.html", title=("Validation entreprise"), diff --git a/app/static/css/entreprises.css b/app/static/css/entreprises.css index e6304647..90376b55 100644 --- a/app/static/css/entreprises.css +++ b/app/static/css/entreprises.css @@ -1,3 +1,24 @@ +.nav-entreprise>ul { + margin: 0; + padding: 0; +} + +.nav-entreprise li{ + list-style: none; + display: inline-block; + +} + +.nav-entreprise>ul>li>a { + text-decoration: none; + color: black; + padding: 15px; +} + +.nav-entreprise>ul>li>a:hover { + color: red; +} + .btn-inverse { color: #ffffff; text-shadow: 0 -1px 0 rgb(0 0 0 / 25%); diff --git a/app/templates/entreprises/contacts.html b/app/templates/entreprises/contacts.html index 7370855d..49b27ae1 100644 --- a/app/templates/entreprises/contacts.html +++ b/app/templates/entreprises/contacts.html @@ -2,6 +2,8 @@ {% extends 'base.html' %} {% block app_content %} + {% include 'entreprises/nav.html' %} + {% if logs %}

Dernières opérations Voir tout

diff --git a/app/templates/entreprises/entreprises.html b/app/templates/entreprises/entreprises.html index 5b4531fc..465b26dd 100644 --- a/app/templates/entreprises/entreprises.html +++ b/app/templates/entreprises/entreprises.html @@ -2,6 +2,8 @@ {% extends 'base.html' %} {% block app_content %} + {% include 'entreprises/nav.html' %} + {% if logs %}

Dernières opérations Voir tout

diff --git a/app/templates/entreprises/entreprises_validation.html b/app/templates/entreprises/entreprises_validation.html index 8c3da9d3..39463fe9 100644 --- a/app/templates/entreprises/entreprises_validation.html +++ b/app/templates/entreprises/entreprises_validation.html @@ -2,6 +2,8 @@ {% extends 'base.html' %} {% block app_content %} + {% include 'entreprises/nav.html' %} + {% if logs %}

Dernières opérations

@@ -36,7 +38,7 @@ {{ entreprise.ville }} {{ entreprise.pays }} - Valider + Voir {% endfor %} diff --git a/app/templates/entreprises/fiche_entreprise.html b/app/templates/entreprises/fiche_entreprise.html index 36078189..443afea4 100644 --- a/app/templates/entreprises/fiche_entreprise.html +++ b/app/templates/entreprises/fiche_entreprise.html @@ -4,7 +4,7 @@ {% block app_content %} {% if logs %}
-

Dernières opérations sur cette fiche

+

Dernières opérations sur cette fiche Voir tout

    {% for log in logs %}
  • diff --git a/app/templates/entreprises/logs_entreprise.html b/app/templates/entreprises/logs_entreprise.html new file mode 100644 index 00000000..a9b806ee --- /dev/null +++ b/app/templates/entreprises/logs_entreprise.html @@ -0,0 +1,37 @@ +{# -*- mode: jinja-html -*- #} +{% extends 'base.html' %} + +{% block app_content %} +
    +

    Dernières opérations - {{ entreprise.nom }}

    +
      + {% for log in logs.items %} +
    • {{ log.date.strftime('%d %b %Hh%M') }}{{ log.text|safe }} par {{ log.authenticated_user|get_nomcomplet }}
    • + {% endfor %} +
    +
    + +
    + + « + + {% for page_num in logs.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %} + {% if page_num %} + {% if logs.page == page_num %} + {{ page_num }} + {% else %} + {{ page_num }} + {% endif %} + {% else %} + ... + {% endif %} + {% endfor %} + + » + +
    + +

    + Page {{ logs.page }} sur {{ logs.pages }} +

    +{% endblock %} \ No newline at end of file diff --git a/app/templates/entreprises/nav.html b/app/templates/entreprises/nav.html new file mode 100644 index 00000000..f4673bfc --- /dev/null +++ b/app/templates/entreprises/nav.html @@ -0,0 +1,11 @@ +{# -*- mode: jinja-html -*- #} + \ No newline at end of file diff --git a/app/templates/entreprises/offres_recues.html b/app/templates/entreprises/offres_recues.html index 36163d82..5f31fb74 100644 --- a/app/templates/entreprises/offres_recues.html +++ b/app/templates/entreprises/offres_recues.html @@ -2,6 +2,8 @@ {% extends 'base.html' %} {% block app_content %} + {% include 'entreprises/nav.html' %} +

    {{ title }}

    {% if offres_recues %}