From 17d954eea8f990ff8fbd20cc2a79c1ac35d54f32 Mon Sep 17 00:00:00 2001 From: Arthur ZHU Date: Wed, 26 Jan 2022 18:42:48 +0100 Subject: [PATCH] permissions pour les roles + fin validation entreprises --- app/entreprises/routes.py | 50 ++++++++++++++++++- app/scodoc/sco_permissions.py | 9 ++++ .../entreprises/entreprises_validation.html | 49 ++++++++++++++++++ .../entreprises/fiche_entreprise.html | 2 +- .../fiche_entreprise_validation.html | 45 +++++++++++++++++ .../entreprises/offres_expirees.html | 16 +++--- 6 files changed, 161 insertions(+), 10 deletions(-) create mode 100644 app/templates/entreprises/entreprises_validation.html create mode 100644 app/templates/entreprises/fiche_entreprise_validation.html diff --git a/app/entreprises/routes.py b/app/entreprises/routes.py index c7be9643b..8266d67a1 100644 --- a/app/entreprises/routes.py +++ b/app/entreprises/routes.py @@ -44,6 +44,7 @@ from werkzeug.utils import secure_filename @bp.route("/", methods=["GET"]) +@permission_required(Permission.RelationsEntreprisesView) def index(): """ Permet d'afficher une page avec la liste des entreprises et une liste des dernières opérations @@ -68,16 +69,18 @@ def index(): @bp.route("/validation", methods=["GET"]) +@permission_required(Permission.RelationsEntreprisesValidate) def validation_entreprise(): entreprises = Entreprise.query.filter_by(visible=False).all() return render_template( - "entreprises/entreprises.html", + "entreprises/entreprises_validation.html", title=("Entreprises"), entreprises=entreprises, ) @bp.route("/contacts", methods=["GET"]) +@permission_required(Permission.RelationsEntreprisesView) def contacts(): """ Permet d'afficher une page la liste des contacts et une liste des dernières opérations @@ -104,6 +107,7 @@ def contacts(): @bp.route("/fiche_entreprise/", methods=["GET"]) +@permission_required(Permission.RelationsEntreprisesView) def fiche_entreprise(id): """ Permet d'afficher la fiche entreprise d'une entreprise avec une liste des dernières opérations et @@ -130,7 +134,7 @@ def fiche_entreprise(id): historique: liste des étudiants ayant réaliser un stage ou une alternance dans l'entreprise """ - entreprise = Entreprise.query.filter_by(id=id).first_or_404() + entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404() offres = entreprise.offres offres_with_files = [] for offre in offres: @@ -176,7 +180,21 @@ def fiche_entreprise(id): ) +@bp.route("/fiche_entreprise_validation/", methods=["GET"]) +@permission_required(Permission.RelationsEntreprisesValidate) +def fiche_entreprise_validation(id): + entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404() + contacts = entreprise.contacts + return render_template( + "entreprises/fiche_entreprise_validation.html", + title=("Fiche entreprise"), + entreprise=entreprise, + contacts=contacts, + ) + + @bp.route("/offres_recues", methods=["GET"]) +@permission_required(Permission.RelationsEntreprisesView) def offres(): """ Permet d'afficher la page où l'on recoit les offres @@ -202,6 +220,7 @@ def offres(): @bp.route("/fiche_entreprise//offres_expirees") +@permission_required(Permission.RelationsEntreprisesView) def offres_expirees(id): entreprise = Entreprise.query.filter_by(id=id).first_or_404() offres = entreprise.offres @@ -232,6 +251,7 @@ def offres_expirees(id): @bp.route("/add_entreprise", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def add_entreprise(): """ Permet d'ajouter une entreprise dans la base avec un formulaire @@ -276,6 +296,7 @@ def add_entreprise(): @bp.route("/edit_entreprise/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def edit_entreprise(id): """ Permet de modifier une entreprise de la base avec un formulaire @@ -344,6 +365,7 @@ def edit_entreprise(id): @bp.route("/delete_entreprise/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def delete_entreprise(id): """ Permet de supprimer une entreprise de la base avec un formulaire de confirmation @@ -372,7 +394,17 @@ def delete_entreprise(id): ) +@bp.route("/validate_entreprise/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesValidate) +def validate_entreprise(id): + entreprise = Entreprise.query.filter_by(id=id).first_or_404() + entreprise.visible = True + db.session.commit() + return redirect(url_for("entreprises.fiche_entreprise", id=entreprise.id)) + + @bp.route("/add_offre/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def add_offre(id): """ Permet d'ajouter une offre a une entreprise @@ -407,6 +439,7 @@ def add_offre(id): @bp.route("/edit_offre/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def edit_offre(id): """ Permet de modifier une offre @@ -446,6 +479,7 @@ def edit_offre(id): @bp.route("/delete_offre/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def delete_offre(id): """ Permet de supprimer une offre @@ -474,6 +508,7 @@ def delete_offre(id): @bp.route("/add_contact/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def add_contact(id): """ Permet d'ajouter un contact a une entreprise @@ -508,6 +543,7 @@ def add_contact(id): @bp.route("/edit_contact/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def edit_contact(id): """ Permet de modifier un contact @@ -549,6 +585,7 @@ def edit_contact(id): @bp.route("/delete_contact/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def delete_contact(id): """ Permet de supprimer un contact @@ -586,6 +623,7 @@ def delete_contact(id): @bp.route("/add_historique/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def add_historique(id): """ Permet d'ajouter un étudiant ayant réalisé un stage ou une alternance sur la fiche entreprise de l'entreprise @@ -630,6 +668,7 @@ def add_historique(id): @bp.route("/envoyer_offre/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesSend) def envoyer_offre(id): """ Permet d'envoyer une offre à un utilisateur @@ -663,6 +702,7 @@ def envoyer_offre(id): @bp.route("/etudiants") +@permission_required(Permission.RelationsEntreprisesChange) def json_etudiants(): """ Permet de récuperer un JSON avec tous les étudiants @@ -696,6 +736,7 @@ def json_etudiants(): @bp.route("/responsables") +@permission_required(Permission.RelationsEntreprisesChange) def json_responsables(): """ Permet de récuperer un JSON avec tous les étudiants @@ -724,6 +765,7 @@ def json_responsables(): @bp.route("/export_entreprises") +@permission_required(Permission.RelationsEntreprisesExport) def export_entreprises(): """ Permet d'exporter la liste des entreprises sous format excel (.xlsx) @@ -763,6 +805,7 @@ def export_contacts(): @bp.route("/export_contacts_bis") +@permission_required(Permission.RelationsEntreprisesExport) def export_contacts_bis(): """ Permet d'exporter la liste des contacts avec leur entreprise sous format excel (.xlsx) @@ -798,6 +841,7 @@ def export_contacts_bis(): @bp.route( "/get_offre_file////" ) +@permission_required(Permission.RelationsEntreprisesView) def get_offre_file(entreprise_id, offre_id, filedir, filename): """ Permet de télécharger un fichier d'une offre @@ -838,6 +882,7 @@ def get_offre_file(entreprise_id, offre_id, filedir, filename): @bp.route("/add_offre_file/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def add_offre_file(offre_id): """ Permet d'ajouter un fichier à une offre @@ -869,6 +914,7 @@ def add_offre_file(offre_id): @bp.route("/delete_offre_file//", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def delete_offre_file(offre_id, filedir): """ Permet de supprimer un fichier d'une offre diff --git a/app/scodoc/sco_permissions.py b/app/scodoc/sco_permissions.py index a1a06aba8..55981b033 100644 --- a/app/scodoc/sco_permissions.py +++ b/app/scodoc/sco_permissions.py @@ -37,6 +37,15 @@ _SCO_PERMISSIONS = ( (1 << 21, "ScoEditPVJury", "Éditer les PV de jury"), # ajouter maquettes Apogee (=> chef dept et secr): (1 << 22, "ScoEditApo", "Ajouter des maquettes Apogées"), + (1 << 23, "RelationsEntreprisesView", "Voir l'application relations entreprises"), + (1 << 24, "RelationsEntreprisesChange", "Modifier les entreprises"), + ( + 1 << 25, + "RelationsEntreprisesExport", + "Exporter les données de l'application relations entreprises", + ), + (1 << 25, "RelationsEntreprisesSend", "Envoyer des offres"), + (1 << 26, "RelationsEntreprisesValidate", "Valide les entreprises"), ) diff --git a/app/templates/entreprises/entreprises_validation.html b/app/templates/entreprises/entreprises_validation.html new file mode 100644 index 000000000..14a5b49da --- /dev/null +++ b/app/templates/entreprises/entreprises_validation.html @@ -0,0 +1,49 @@ +{# -*- mode: jinja-html -*- #} +{% extends 'base.html' %} + +{% block app_content %} + {% if logs %} +
+

Dernières opérations

+
    + {% for log in logs %} +
  • {{ log.date.strftime('%d %b %Hh%M') }}{{ log.text|safe }} par {{ log.authenticated_user|get_nomcomplet }}
  • + {% endfor %} +
+
+ {% endif %} +
+

Liste des entreprises à valider

+ {% if entreprises %} +
+ + + + + + + + + + + {% for entreprise in entreprises %} + + + + + + + + + + {% endfor %} +
SIRETNomAdresseCode postalVillePaysAction
{{ entreprise.siret }}{{ entreprise.nom }}{{ entreprise.adresse }}{{ entreprise.codepostal }}{{ entreprise.ville }}{{ entreprise.pays }} + Valider +
+ {% else %} +
Aucune entreprise à valider
+
+
+ {% endif %} +
+{% endblock %} \ No newline at end of file diff --git a/app/templates/entreprises/fiche_entreprise.html b/app/templates/entreprises/fiche_entreprise.html index 8e03942d4..a7cc09632 100644 --- a/app/templates/entreprises/fiche_entreprise.html +++ b/app/templates/entreprises/fiche_entreprise.html @@ -71,7 +71,7 @@ Ajouter contact Ajouter historique - Voir les offres expirées + Voir les offres expirées {% endblock %} \ No newline at end of file diff --git a/app/templates/entreprises/fiche_entreprise_validation.html b/app/templates/entreprises/fiche_entreprise_validation.html new file mode 100644 index 000000000..6daf2ce11 --- /dev/null +++ b/app/templates/entreprises/fiche_entreprise_validation.html @@ -0,0 +1,45 @@ +{# -*- mode: jinja-html -*- #} +{% extends 'base.html' %} + +{% block app_content %} +
+

Fiche entreprise - {{ entreprise.nom }} ({{ entreprise.siret }})

+ +
+

+ SIRET : {{ entreprise.siret }}
+ Nom : {{ entreprise.nom }}
+ Adresse : {{ entreprise.adresse }}
+ Code postal : {{ entreprise.codepostal }}
+ Ville : {{ entreprise.ville }}
+ Pays : {{ entreprise.pays }} +

+
+ + {% if contacts %} +
+ {% for contact in contacts %} + Contact {{loop.index}} +
+

+ Nom : {{ contact.nom }}
+ Prénom : {{ contact.prenom }}
+ Téléphone : {{ contact.telephone }}
+ Mail : {{ contact.mail }}
+ {% if contact.poste %} + Poste : {{ contact.poste }}
+ {% endif %} + {% if contact.service %} + Service : {{ contact.service }}
+ {% endif %} +

+
+ {% endfor %} +
+ {% endif %} + +
+ Valider +
+
+{% endblock %} \ No newline at end of file diff --git a/app/templates/entreprises/offres_expirees.html b/app/templates/entreprises/offres_expirees.html index 50c1b7d76..2b7b60f56 100644 --- a/app/templates/entreprises/offres_expirees.html +++ b/app/templates/entreprises/offres_expirees.html @@ -3,12 +3,14 @@ {% block app_content %}
-

Offres expirées de {{ entreprise.nom }}

-{% if offres_expirees %} - {% for offre in offres_expirees%} - Offre {{loop.index}} (ajouté le {{offre[0].date_ajout.strftime('%d/%m/%Y') }}) - {% include 'entreprises/_offre.html' %} - {% endfor %} -{% endif %} +

Offres expirées de {{ entreprise.nom }}

+ {% if offres_expirees %} + {% for offre in offres_expirees%} + Offre {{loop.index}} (ajouté le {{offre[0].date_ajout.strftime('%d/%m/%Y') }}) + {% include 'entreprises/_offre.html' %} + {% endfor %} + {% else %} +
Aucune offre expirées
+ {% endif %}
{% endblock %} \ No newline at end of file