permissions pour les roles + fin validation entreprises

This commit is contained in:
Arthur ZHU 2022-01-26 18:42:48 +01:00
parent 789d2a8c88
commit 17d954eea8
6 changed files with 161 additions and 10 deletions

View File

@ -44,6 +44,7 @@ from werkzeug.utils import secure_filename
@bp.route("/", methods=["GET"]) @bp.route("/", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView)
def index(): def index():
""" """
Permet d'afficher une page avec la liste des entreprises et une liste des dernières opérations 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"]) @bp.route("/validation", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesValidate)
def validation_entreprise(): def validation_entreprise():
entreprises = Entreprise.query.filter_by(visible=False).all() entreprises = Entreprise.query.filter_by(visible=False).all()
return render_template( return render_template(
"entreprises/entreprises.html", "entreprises/entreprises_validation.html",
title=("Entreprises"), title=("Entreprises"),
entreprises=entreprises, entreprises=entreprises,
) )
@bp.route("/contacts", methods=["GET"]) @bp.route("/contacts", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView)
def contacts(): def contacts():
""" """
Permet d'afficher une page la liste des contacts et une liste des dernières opérations 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/<int:id>", methods=["GET"]) @bp.route("/fiche_entreprise/<int:id>", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView)
def fiche_entreprise(id): def fiche_entreprise(id):
""" """
Permet d'afficher la fiche entreprise d'une entreprise avec une liste des dernières opérations et 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: historique:
liste des étudiants ayant réaliser un stage ou une alternance dans l'entreprise 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 = entreprise.offres
offres_with_files = [] offres_with_files = []
for offre in offres: for offre in offres:
@ -176,7 +180,21 @@ def fiche_entreprise(id):
) )
@bp.route("/fiche_entreprise_validation/<int:id>", 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"]) @bp.route("/offres_recues", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView)
def offres(): def offres():
""" """
Permet d'afficher la page où l'on recoit les offres Permet d'afficher la page où l'on recoit les offres
@ -202,6 +220,7 @@ def offres():
@bp.route("/fiche_entreprise/<int:id>/offres_expirees") @bp.route("/fiche_entreprise/<int:id>/offres_expirees")
@permission_required(Permission.RelationsEntreprisesView)
def offres_expirees(id): def offres_expirees(id):
entreprise = Entreprise.query.filter_by(id=id).first_or_404() entreprise = Entreprise.query.filter_by(id=id).first_or_404()
offres = entreprise.offres offres = entreprise.offres
@ -232,6 +251,7 @@ def offres_expirees(id):
@bp.route("/add_entreprise", methods=["GET", "POST"]) @bp.route("/add_entreprise", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def add_entreprise(): def add_entreprise():
""" """
Permet d'ajouter une entreprise dans la base avec un formulaire Permet d'ajouter une entreprise dans la base avec un formulaire
@ -276,6 +296,7 @@ def add_entreprise():
@bp.route("/edit_entreprise/<int:id>", methods=["GET", "POST"]) @bp.route("/edit_entreprise/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def edit_entreprise(id): def edit_entreprise(id):
""" """
Permet de modifier une entreprise de la base avec un formulaire Permet de modifier une entreprise de la base avec un formulaire
@ -344,6 +365,7 @@ def edit_entreprise(id):
@bp.route("/delete_entreprise/<int:id>", methods=["GET", "POST"]) @bp.route("/delete_entreprise/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def delete_entreprise(id): def delete_entreprise(id):
""" """
Permet de supprimer une entreprise de la base avec un formulaire de confirmation 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/<int:id>", 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/<int:id>", methods=["GET", "POST"]) @bp.route("/add_offre/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def add_offre(id): def add_offre(id):
""" """
Permet d'ajouter une offre a une entreprise Permet d'ajouter une offre a une entreprise
@ -407,6 +439,7 @@ def add_offre(id):
@bp.route("/edit_offre/<int:id>", methods=["GET", "POST"]) @bp.route("/edit_offre/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def edit_offre(id): def edit_offre(id):
""" """
Permet de modifier une offre Permet de modifier une offre
@ -446,6 +479,7 @@ def edit_offre(id):
@bp.route("/delete_offre/<int:id>", methods=["GET", "POST"]) @bp.route("/delete_offre/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def delete_offre(id): def delete_offre(id):
""" """
Permet de supprimer une offre Permet de supprimer une offre
@ -474,6 +508,7 @@ def delete_offre(id):
@bp.route("/add_contact/<int:id>", methods=["GET", "POST"]) @bp.route("/add_contact/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def add_contact(id): def add_contact(id):
""" """
Permet d'ajouter un contact a une entreprise Permet d'ajouter un contact a une entreprise
@ -508,6 +543,7 @@ def add_contact(id):
@bp.route("/edit_contact/<int:id>", methods=["GET", "POST"]) @bp.route("/edit_contact/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def edit_contact(id): def edit_contact(id):
""" """
Permet de modifier un contact Permet de modifier un contact
@ -549,6 +585,7 @@ def edit_contact(id):
@bp.route("/delete_contact/<int:id>", methods=["GET", "POST"]) @bp.route("/delete_contact/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def delete_contact(id): def delete_contact(id):
""" """
Permet de supprimer un contact Permet de supprimer un contact
@ -586,6 +623,7 @@ def delete_contact(id):
@bp.route("/add_historique/<int:id>", methods=["GET", "POST"]) @bp.route("/add_historique/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def add_historique(id): def add_historique(id):
""" """
Permet d'ajouter un étudiant ayant réalisé un stage ou une alternance sur la fiche entreprise de l'entreprise 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/<int:id>", methods=["GET", "POST"]) @bp.route("/envoyer_offre/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesSend)
def envoyer_offre(id): def envoyer_offre(id):
""" """
Permet d'envoyer une offre à un utilisateur Permet d'envoyer une offre à un utilisateur
@ -663,6 +702,7 @@ def envoyer_offre(id):
@bp.route("/etudiants") @bp.route("/etudiants")
@permission_required(Permission.RelationsEntreprisesChange)
def json_etudiants(): def json_etudiants():
""" """
Permet de récuperer un JSON avec tous les étudiants Permet de récuperer un JSON avec tous les étudiants
@ -696,6 +736,7 @@ def json_etudiants():
@bp.route("/responsables") @bp.route("/responsables")
@permission_required(Permission.RelationsEntreprisesChange)
def json_responsables(): def json_responsables():
""" """
Permet de récuperer un JSON avec tous les étudiants Permet de récuperer un JSON avec tous les étudiants
@ -724,6 +765,7 @@ def json_responsables():
@bp.route("/export_entreprises") @bp.route("/export_entreprises")
@permission_required(Permission.RelationsEntreprisesExport)
def export_entreprises(): def export_entreprises():
""" """
Permet d'exporter la liste des entreprises sous format excel (.xlsx) Permet d'exporter la liste des entreprises sous format excel (.xlsx)
@ -763,6 +805,7 @@ def export_contacts():
@bp.route("/export_contacts_bis") @bp.route("/export_contacts_bis")
@permission_required(Permission.RelationsEntreprisesExport)
def export_contacts_bis(): def export_contacts_bis():
""" """
Permet d'exporter la liste des contacts avec leur entreprise sous format excel (.xlsx) Permet d'exporter la liste des contacts avec leur entreprise sous format excel (.xlsx)
@ -798,6 +841,7 @@ def export_contacts_bis():
@bp.route( @bp.route(
"/get_offre_file/<int:entreprise_id>/<int:offre_id>/<string:filedir>/<string:filename>" "/get_offre_file/<int:entreprise_id>/<int:offre_id>/<string:filedir>/<string:filename>"
) )
@permission_required(Permission.RelationsEntreprisesView)
def get_offre_file(entreprise_id, offre_id, filedir, filename): def get_offre_file(entreprise_id, offre_id, filedir, filename):
""" """
Permet de télécharger un fichier d'une offre 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/<int:offre_id>", methods=["GET", "POST"]) @bp.route("/add_offre_file/<int:offre_id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def add_offre_file(offre_id): def add_offre_file(offre_id):
""" """
Permet d'ajouter un fichier à une offre Permet d'ajouter un fichier à une offre
@ -869,6 +914,7 @@ def add_offre_file(offre_id):
@bp.route("/delete_offre_file/<int:offre_id>/<string:filedir>", methods=["GET", "POST"]) @bp.route("/delete_offre_file/<int:offre_id>/<string:filedir>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def delete_offre_file(offre_id, filedir): def delete_offre_file(offre_id, filedir):
""" """
Permet de supprimer un fichier d'une offre Permet de supprimer un fichier d'une offre

View File

@ -37,6 +37,15 @@ _SCO_PERMISSIONS = (
(1 << 21, "ScoEditPVJury", "Éditer les PV de jury"), (1 << 21, "ScoEditPVJury", "Éditer les PV de jury"),
# ajouter maquettes Apogee (=> chef dept et secr): # ajouter maquettes Apogee (=> chef dept et secr):
(1 << 22, "ScoEditApo", "Ajouter des maquettes Apogées"), (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"),
) )

View File

@ -0,0 +1,49 @@
{# -*- mode: jinja-html -*- #}
{% extends 'base.html' %}
{% block app_content %}
{% if logs %}
<div class="container">
<h3>Dernières opérations</h3>
<ul>
{% for log in logs %}
<li><span style="margin-right: 10px;">{{ log.date.strftime('%d %b %Hh%M') }}</span><span>{{ log.text|safe }} par {{ log.authenticated_user|get_nomcomplet }}</span></li>
{% endfor %}
</ul>
</div>
{% endif %}
<div class="container">
<h1>Liste des entreprises à valider</h1>
{% if entreprises %}
<div class="table-responsive">
<table class="table table-bordered table-hover">
<tr>
<th>SIRET</th>
<th>Nom</th>
<th>Adresse</th>
<th>Code postal</th>
<th>Ville</th>
<th>Pays</th>
<th>Action</th>
</tr>
{% for entreprise in entreprises %}
<tr class="table-row active">
<th><a href="{{ url_for('entreprises.fiche_entreprise_validation', id=entreprise.id) }}">{{ entreprise.siret }}</a></th>
<th>{{ entreprise.nom }}</th>
<th>{{ entreprise.adresse }}</th>
<th>{{ entreprise.codepostal }}</th>
<th>{{ entreprise.ville }}</th>
<th>{{ entreprise.pays }}</th>
<th>
<a class="btn btn-primary" href="{{ url_for('entreprises.validate_entreprise', id=entreprise.id) }}">Valider</a>
</th>
</tr>
{% endfor %}
</table>
{% else %}
<div>Aucune entreprise à valider</div>
<br>
</div>
{% endif %}
</div>
{% endblock %}

View File

@ -0,0 +1,45 @@
{# -*- mode: jinja-html -*- #}
{% extends 'base.html' %}
{% block app_content %}
<div class="container">
<h2>Fiche entreprise - {{ entreprise.nom }} ({{ entreprise.siret }})</h2>
<div>
<p>
SIRET : {{ entreprise.siret }}<br>
Nom : {{ entreprise.nom }}<br>
Adresse : {{ entreprise.adresse }}<br>
Code postal : {{ entreprise.codepostal }}<br>
Ville : {{ entreprise.ville }}<br>
Pays : {{ entreprise.pays }}
</p>
</div>
{% if contacts %}
<div>
{% for contact in contacts %}
Contact {{loop.index}}
<div>
<p>
Nom : {{ contact.nom }}<br>
Prénom : {{ contact.prenom }}<br>
Téléphone : {{ contact.telephone }}<br>
Mail : {{ contact.mail }}<br>
{% if contact.poste %}
Poste : {{ contact.poste }}<br>
{% endif %}
{% if contact.service %}
Service : {{ contact.service }}<br>
{% endif %}
</p>
</div>
{% endfor %}
</div>
{% endif %}
<div>
<a class="btn btn-primary" href="{{ url_for('entreprises.validate_entreprise', id=entreprise.id) }}">Valider</a>
</div>
</div>
{% endblock %}

View File

@ -9,6 +9,8 @@
Offre {{loop.index}} (ajouté le {{offre[0].date_ajout.strftime('%d/%m/%Y') }}) Offre {{loop.index}} (ajouté le {{offre[0].date_ajout.strftime('%d/%m/%Y') }})
{% include 'entreprises/_offre.html' %} {% include 'entreprises/_offre.html' %}
{% endfor %} {% endfor %}
{% else %}
<div>Aucune offre expirées</div>
{% endif %} {% endif %}
</div> </div>
{% endblock %} {% endblock %}