forked from ScoDoc/ScoDoc
permissions pour les roles + fin validation entreprises
This commit is contained in:
parent
789d2a8c88
commit
17d954eea8
@ -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
|
||||
|
@ -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"),
|
||||
)
|
||||
|
||||
|
||||
|
49
app/templates/entreprises/entreprises_validation.html
Normal file
49
app/templates/entreprises/entreprises_validation.html
Normal 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 %}
|
45
app/templates/entreprises/fiche_entreprise_validation.html
Normal file
45
app/templates/entreprises/fiche_entreprise_validation.html
Normal 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 %}
|
@ -3,12 +3,14 @@
|
||||
|
||||
{% block app_content %}
|
||||
<div class="container">
|
||||
<h1>Offres expirées de {{ entreprise.nom }}</h1>
|
||||
{% 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 %}
|
||||
<h1>Offres expirées de {{ entreprise.nom }}</h1>
|
||||
{% 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 %}
|
||||
<div>Aucune offre expirées</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user