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"])
|
@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
|
||||||
|
@ -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"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
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 %}
|
@ -71,7 +71,7 @@
|
|||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.add_contact', id=entreprise.id) }}">Ajouter contact</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.add_contact', id=entreprise.id) }}">Ajouter contact</a>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.add_historique', id=entreprise.id) }}">Ajouter
|
<a class="btn btn-primary" href="{{ url_for('entreprises.add_historique', id=entreprise.id) }}">Ajouter
|
||||||
historique</a>
|
historique</a>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.offres_expirees', id=entreprise.id) }}">Voir les offres expirées</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.offres_expirees', id=entreprise.id) }}">Voir les offres expirées</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% 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 %}
|
{% block app_content %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>Offres expirées de {{ entreprise.nom }}</h1>
|
<h1>Offres expirées de {{ entreprise.nom }}</h1>
|
||||||
{% if offres_expirees %}
|
{% if offres_expirees %}
|
||||||
{% for offre in offres_expirees%}
|
{% for offre in offres_expirees%}
|
||||||
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 %}
|
||||||
{% endif %}
|
{% else %}
|
||||||
|
<div>Aucune offre expirées</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
Loading…
Reference in New Issue
Block a user