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"])
@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/<int:id>", 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/<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"])
@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/<int:id>/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/<int:id>", 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/<int:id>", 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/<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"])
@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/<int:id>", 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/<int:id>", 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/<int:id>", 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/<int:id>", 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/<int:id>", 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/<int:id>", 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/<int:id>", 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/<int:entreprise_id>/<int:offre_id>/<string:filedir>/<string:filename>"
)
@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/<int:offre_id>", 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/<int:offre_id>/<string:filedir>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def delete_offre_file(offre_id, filedir):
"""
Permet de supprimer un fichier d'une offre

View File

@ -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"),
)

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') }})
{% include 'entreprises/_offre.html' %}
{% endfor %}
{% else %}
<div>Aucune offre expirées</div>
{% endif %}
</div>
{% endblock %}