ajout pagination + nettoyage
This commit is contained in:
parent
2207d25e35
commit
2d9e428ebf
@ -7,7 +7,7 @@ from app.auth.models import User
|
|||||||
|
|
||||||
bp = Blueprint("entreprises", __name__)
|
bp = Blueprint("entreprises", __name__)
|
||||||
|
|
||||||
LOGS_LEN = 10
|
LOGS_LEN = 5
|
||||||
|
|
||||||
|
|
||||||
@bp.app_template_filter()
|
@bp.app_template_filter()
|
||||||
|
@ -48,17 +48,11 @@ from werkzeug.utils import secure_filename
|
|||||||
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
|
||||||
|
|
||||||
Retourne: template de la page (entreprises.html)
|
|
||||||
Arguments du template:
|
|
||||||
title:
|
|
||||||
titre de la page
|
|
||||||
entreprises:
|
|
||||||
liste des entreprises
|
|
||||||
logs:
|
|
||||||
liste des logs
|
|
||||||
"""
|
"""
|
||||||
entreprises = Entreprise.query.filter_by(visible=True).all()
|
page = request.args.get("page", 1, type=int)
|
||||||
|
entreprises = Entreprise.query.filter_by(visible=True).paginate(
|
||||||
|
page=page, per_page=10
|
||||||
|
)
|
||||||
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
|
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
|
||||||
return render_template(
|
return render_template(
|
||||||
"entreprises/entreprises.html",
|
"entreprises/entreprises.html",
|
||||||
@ -68,9 +62,27 @@ def index():
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/logs", methods=["GET"])
|
||||||
|
@permission_required(Permission.RelationsEntreprisesView)
|
||||||
|
def logs():
|
||||||
|
"""
|
||||||
|
Permet d'afficher les logs (toutes les entreprises)
|
||||||
|
"""
|
||||||
|
page = request.args.get("page", 1, type=int)
|
||||||
|
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).paginate(
|
||||||
|
page=page, per_page=20
|
||||||
|
)
|
||||||
|
if logs is None:
|
||||||
|
abort(404)
|
||||||
|
return render_template("entreprises/logs.html", title=("Logs"), logs=logs)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/validation", methods=["GET"])
|
@bp.route("/validation", methods=["GET"])
|
||||||
@permission_required(Permission.RelationsEntreprisesValidate)
|
@permission_required(Permission.RelationsEntreprisesValidate)
|
||||||
def validation_entreprise():
|
def validation_entreprise():
|
||||||
|
"""
|
||||||
|
Permet d'afficher une page avec la liste des entreprises a valider
|
||||||
|
"""
|
||||||
entreprises = Entreprise.query.filter_by(visible=False).all()
|
entreprises = Entreprise.query.filter_by(visible=False).all()
|
||||||
return render_template(
|
return render_template(
|
||||||
"entreprises/entreprises_validation.html",
|
"entreprises/entreprises_validation.html",
|
||||||
@ -84,21 +96,13 @@ def validation_entreprise():
|
|||||||
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
|
||||||
|
|
||||||
Retourne: template de la page (contacts.html)
|
|
||||||
Arguments du template:
|
|
||||||
title:
|
|
||||||
titre de la page
|
|
||||||
contacts:
|
|
||||||
liste des contacts
|
|
||||||
logs:
|
|
||||||
liste des logs
|
|
||||||
"""
|
"""
|
||||||
|
page = request.args.get("page", 1, type=int)
|
||||||
contacts = (
|
contacts = (
|
||||||
db.session.query(EntrepriseContact, Entreprise)
|
db.session.query(EntrepriseContact, Entreprise)
|
||||||
.join(Entreprise, EntrepriseContact.entreprise_id == Entreprise.id)
|
.join(Entreprise, EntrepriseContact.entreprise_id == Entreprise.id)
|
||||||
.filter_by(visible=True)
|
.filter_by(visible=True)
|
||||||
.all()
|
.paginate(page=page, per_page=10)
|
||||||
)
|
)
|
||||||
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
|
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
|
||||||
return render_template(
|
return render_template(
|
||||||
@ -114,25 +118,6 @@ def fiche_entreprise(id):
|
|||||||
l'historique des étudiants ayant réaliser un stage ou une alternance dans cette entreprise.
|
l'historique des étudiants ayant réaliser un stage ou une alternance dans cette entreprise.
|
||||||
La fiche entreprise comporte les informations de l'entreprise, les contacts de l'entreprise et
|
La fiche entreprise comporte les informations de l'entreprise, les contacts de l'entreprise et
|
||||||
les offres de l'entreprise.
|
les offres de l'entreprise.
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id de l'entreprise
|
|
||||||
|
|
||||||
Retourne: template de la page (fiche_entreprise.html)
|
|
||||||
Arguments du template:
|
|
||||||
title:
|
|
||||||
titre de la page
|
|
||||||
entreprise:
|
|
||||||
un objet entreprise
|
|
||||||
contacts:
|
|
||||||
liste des contacts de l'entreprise
|
|
||||||
offres:
|
|
||||||
liste des offres de l'entreprise avec leurs fichiers
|
|
||||||
logs:
|
|
||||||
liste des logs
|
|
||||||
historique:
|
|
||||||
liste des étudiants ayant réaliser un stage ou une alternance dans l'entreprise
|
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
||||||
offres = entreprise.offres
|
offres = entreprise.offres
|
||||||
@ -183,6 +168,9 @@ def fiche_entreprise(id):
|
|||||||
@bp.route("/fiche_entreprise_validation/<int:id>", methods=["GET"])
|
@bp.route("/fiche_entreprise_validation/<int:id>", methods=["GET"])
|
||||||
@permission_required(Permission.RelationsEntreprisesValidate)
|
@permission_required(Permission.RelationsEntreprisesValidate)
|
||||||
def fiche_entreprise_validation(id):
|
def fiche_entreprise_validation(id):
|
||||||
|
"""
|
||||||
|
Permet d'afficher la fiche entreprise d'une entreprise a valider
|
||||||
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
|
||||||
contacts = entreprise.contacts
|
contacts = entreprise.contacts
|
||||||
return render_template(
|
return render_template(
|
||||||
@ -198,13 +186,6 @@ def fiche_entreprise_validation(id):
|
|||||||
def offres_recues():
|
def offres_recues():
|
||||||
"""
|
"""
|
||||||
Permet d'afficher la page où l'on recoit les offres
|
Permet d'afficher la page où l'on recoit les offres
|
||||||
|
|
||||||
Retourne: template de la page (offres.html)
|
|
||||||
Arguments du template:
|
|
||||||
title:
|
|
||||||
titre de la page
|
|
||||||
offres_recus:
|
|
||||||
liste des offres reçues
|
|
||||||
"""
|
"""
|
||||||
offres_recues = (
|
offres_recues = (
|
||||||
db.session.query(EntrepriseEnvoiOffre, EntrepriseOffre)
|
db.session.query(EntrepriseEnvoiOffre, EntrepriseOffre)
|
||||||
@ -222,6 +203,9 @@ def offres_recues():
|
|||||||
@bp.route("/fiche_entreprise/<int:id>/offres_expirees")
|
@bp.route("/fiche_entreprise/<int:id>/offres_expirees")
|
||||||
@permission_required(Permission.RelationsEntreprisesView)
|
@permission_required(Permission.RelationsEntreprisesView)
|
||||||
def offres_expirees(id):
|
def offres_expirees(id):
|
||||||
|
"""
|
||||||
|
Permet d'afficher la liste des offres expirés d'une entreprise
|
||||||
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
||||||
offres = entreprise.offres
|
offres = entreprise.offres
|
||||||
offres_expirees_with_files = []
|
offres_expirees_with_files = []
|
||||||
@ -290,7 +274,7 @@ def add_entreprise():
|
|||||||
return redirect(url_for("entreprises.index"))
|
return redirect(url_for("entreprises.index"))
|
||||||
return render_template(
|
return render_template(
|
||||||
"entreprises/ajout_entreprise.html",
|
"entreprises/ajout_entreprise.html",
|
||||||
title=("Ajout entreprise + contact"),
|
title=("Ajout entreprise avec contact"),
|
||||||
form=form,
|
form=form,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -300,10 +284,6 @@ def add_entreprise():
|
|||||||
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
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id de l'entreprise
|
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
||||||
form = EntrepriseModificationForm()
|
form = EntrepriseModificationForm()
|
||||||
@ -369,10 +349,6 @@ def edit_entreprise(id):
|
|||||||
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
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id de l'entreprise
|
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
||||||
form = SuppressionConfirmationForm()
|
form = SuppressionConfirmationForm()
|
||||||
@ -397,6 +373,9 @@ def delete_entreprise(id):
|
|||||||
@bp.route("/validate_entreprise/<int:id>", methods=["GET", "POST"])
|
@bp.route("/validate_entreprise/<int:id>", methods=["GET", "POST"])
|
||||||
@permission_required(Permission.RelationsEntreprisesValidate)
|
@permission_required(Permission.RelationsEntreprisesValidate)
|
||||||
def validate_entreprise(id):
|
def validate_entreprise(id):
|
||||||
|
"""
|
||||||
|
Permet de valider une entreprise
|
||||||
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
|
||||||
entreprise.visible = True
|
entreprise.visible = True
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
@ -408,10 +387,6 @@ def validate_entreprise(id):
|
|||||||
def add_offre(id):
|
def add_offre(id):
|
||||||
"""
|
"""
|
||||||
Permet d'ajouter une offre a une entreprise
|
Permet d'ajouter une offre a une entreprise
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id de l'entreprise
|
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
||||||
form = OffreCreationForm()
|
form = OffreCreationForm()
|
||||||
@ -443,10 +418,6 @@ def add_offre(id):
|
|||||||
def edit_offre(id):
|
def edit_offre(id):
|
||||||
"""
|
"""
|
||||||
Permet de modifier une offre
|
Permet de modifier une offre
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id de l'offre
|
|
||||||
"""
|
"""
|
||||||
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
|
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
|
||||||
form = OffreModificationForm()
|
form = OffreModificationForm()
|
||||||
@ -483,10 +454,6 @@ def edit_offre(id):
|
|||||||
def delete_offre(id):
|
def delete_offre(id):
|
||||||
"""
|
"""
|
||||||
Permet de supprimer une offre
|
Permet de supprimer une offre
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id de l'offre
|
|
||||||
"""
|
"""
|
||||||
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
|
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
|
||||||
entreprise_id = offre.entreprise.id
|
entreprise_id = offre.entreprise.id
|
||||||
@ -512,10 +479,6 @@ def delete_offre(id):
|
|||||||
def add_contact(id):
|
def add_contact(id):
|
||||||
"""
|
"""
|
||||||
Permet d'ajouter un contact a une entreprise
|
Permet d'ajouter un contact a une entreprise
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id de l'entreprise
|
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
||||||
form = ContactCreationForm(hidden_entreprise_id=entreprise.id)
|
form = ContactCreationForm(hidden_entreprise_id=entreprise.id)
|
||||||
@ -547,10 +510,6 @@ def add_contact(id):
|
|||||||
def edit_contact(id):
|
def edit_contact(id):
|
||||||
"""
|
"""
|
||||||
Permet de modifier un contact
|
Permet de modifier un contact
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id du contact
|
|
||||||
"""
|
"""
|
||||||
contact = EntrepriseContact.query.filter_by(id=id).first_or_404()
|
contact = EntrepriseContact.query.filter_by(id=id).first_or_404()
|
||||||
form = ContactModificationForm()
|
form = ContactModificationForm()
|
||||||
@ -589,10 +548,6 @@ def edit_contact(id):
|
|||||||
def delete_contact(id):
|
def delete_contact(id):
|
||||||
"""
|
"""
|
||||||
Permet de supprimer un contact
|
Permet de supprimer un contact
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id du contact
|
|
||||||
"""
|
"""
|
||||||
contact = EntrepriseContact.query.filter_by(id=id).first_or_404()
|
contact = EntrepriseContact.query.filter_by(id=id).first_or_404()
|
||||||
entreprise_id = contact.entreprise.id
|
entreprise_id = contact.entreprise.id
|
||||||
@ -627,10 +582,6 @@ def delete_contact(id):
|
|||||||
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
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id de l'entreprise
|
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
||||||
form = HistoriqueCreationForm()
|
form = HistoriqueCreationForm()
|
||||||
@ -672,10 +623,6 @@ def add_historique(id):
|
|||||||
def envoyer_offre(id):
|
def envoyer_offre(id):
|
||||||
"""
|
"""
|
||||||
Permet d'envoyer une offre à un utilisateur
|
Permet d'envoyer une offre à un utilisateur
|
||||||
|
|
||||||
Arguments:
|
|
||||||
id:
|
|
||||||
l'id de l'offre
|
|
||||||
"""
|
"""
|
||||||
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
|
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
|
||||||
form = EnvoiOffreForm()
|
form = EnvoiOffreForm()
|
||||||
@ -706,13 +653,6 @@ def envoyer_offre(id):
|
|||||||
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
|
||||||
|
|
||||||
Arguments:
|
|
||||||
term:
|
|
||||||
le terme utilisé pour le filtre de l'autosuggest
|
|
||||||
|
|
||||||
Retourne:
|
|
||||||
le JSON de tous les étudiants (nom, prenom, formation actuelle?) correspondant au terme
|
|
||||||
"""
|
"""
|
||||||
if request.args.get("term") == None:
|
if request.args.get("term") == None:
|
||||||
abort(400)
|
abort(400)
|
||||||
@ -740,13 +680,6 @@ def json_etudiants():
|
|||||||
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
|
||||||
|
|
||||||
Arguments:
|
|
||||||
term:
|
|
||||||
le terme utilisé pour le filtre de l'autosuggest
|
|
||||||
|
|
||||||
Retourne:
|
|
||||||
le JSON de tous les utilisateurs (nom, prenom, login) correspondant au terme
|
|
||||||
"""
|
"""
|
||||||
if request.args.get("term") == None:
|
if request.args.get("term") == None:
|
||||||
abort(400)
|
abort(400)
|
||||||
@ -792,7 +725,7 @@ def export_contacts():
|
|||||||
"""
|
"""
|
||||||
Permet d'exporter la liste des contacts sous format excel (.xlsx)
|
Permet d'exporter la liste des contacts sous format excel (.xlsx)
|
||||||
"""
|
"""
|
||||||
contacts = EntrepriseContact.query.filter_by(visible=True).all()
|
contacts = EntrepriseContact.query.all()
|
||||||
if contacts:
|
if contacts:
|
||||||
keys = ["nom", "prenom", "telephone", "mail", "poste", "service"]
|
keys = ["nom", "prenom", "telephone", "mail", "poste", "service"]
|
||||||
titles = keys[:]
|
titles = keys[:]
|
||||||
@ -811,7 +744,7 @@ 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)
|
||||||
"""
|
"""
|
||||||
contacts = EntrepriseContact.query.filter_by(visible=True).all()
|
contacts = EntrepriseContact.query.all()
|
||||||
if contacts:
|
if contacts:
|
||||||
keys = [
|
keys = [
|
||||||
"nom",
|
"nom",
|
||||||
@ -846,16 +779,6 @@ def export_contacts_bis():
|
|||||||
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
|
||||||
|
|
||||||
Arguments:
|
|
||||||
entreprise_id:
|
|
||||||
l'id de l'entreprise
|
|
||||||
offre_id:
|
|
||||||
l'id de l'offre
|
|
||||||
filedir:
|
|
||||||
le répertoire du fichier
|
|
||||||
filename:
|
|
||||||
le nom du fichier
|
|
||||||
"""
|
"""
|
||||||
if os.path.isfile(
|
if os.path.isfile(
|
||||||
os.path.join(
|
os.path.join(
|
||||||
@ -887,10 +810,6 @@ def get_offre_file(entreprise_id, offre_id, filedir, filename):
|
|||||||
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
|
||||||
|
|
||||||
Arguments:
|
|
||||||
offre_id:
|
|
||||||
l'id de l'offre
|
|
||||||
"""
|
"""
|
||||||
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404()
|
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404()
|
||||||
form = AjoutFichierForm()
|
form = AjoutFichierForm()
|
||||||
@ -919,12 +838,6 @@ def add_offre_file(offre_id):
|
|||||||
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
|
||||||
|
|
||||||
Arguments:
|
|
||||||
offre_id:
|
|
||||||
l'id de l'offre
|
|
||||||
filedir:
|
|
||||||
le répertoire du fichier
|
|
||||||
"""
|
"""
|
||||||
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404()
|
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404()
|
||||||
form = SuppressionConfirmationForm()
|
form = SuppressionConfirmationForm()
|
||||||
|
11
app/static/css/entreprises.css
Normal file
11
app/static/css/entreprises.css
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
.btn-inverse {
|
||||||
|
color: #ffffff;
|
||||||
|
text-shadow: 0 -1px 0 rgb(0 0 0 / 25%);
|
||||||
|
background-color: #363636;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-inverse:hover {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #222222;
|
||||||
|
*background-color: #151515;
|
||||||
|
}
|
@ -4,6 +4,7 @@
|
|||||||
{% block styles %}
|
{% block styles %}
|
||||||
{{super()}}
|
{{super()}}
|
||||||
<link rel="stylesheet" href="/ScoDoc/static/css/scodoc.css">
|
<link rel="stylesheet" href="/ScoDoc/static/css/scodoc.css">
|
||||||
|
<link rel="stylesheet" href="/ScoDoc/static/css/entreprises.css">
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block title %}
|
{% block title %}
|
||||||
@ -35,6 +36,9 @@
|
|||||||
url_for('scolar.index_html', scodoc_dept=g.scodoc_dept)
|
url_for('scolar.index_html', scodoc_dept=g.scodoc_dept)
|
||||||
}}">Dept. {{ g.scodoc_dept }}</a></li>
|
}}">Dept. {{ g.scodoc_dept }}</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if not current_user.is_anonymous and current_user.has_permission(current_user.Permission.RelationsEntreprisesView, None) %}
|
||||||
|
<li><a href="{{ url_for('entreprises.index') }}">Entreprises</a></li>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
{% if current_user.is_anonymous %}
|
{% if current_user.is_anonymous %}
|
||||||
|
@ -8,11 +8,12 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<p>
|
<p>
|
||||||
Les champs s'autocomplète selon le SIRET
|
Les champs s'auto complète selon le SIRET
|
||||||
</p>
|
</p>
|
||||||
{{ wtf.quick_form(form, novalidate=True) }}
|
{{ wtf.quick_form(form, novalidate=True) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
window.onload = function(e){
|
window.onload = function(e){
|
||||||
document.getElementById("siret").addEventListener("keyup", autocomplete);
|
document.getElementById("siret").addEventListener("keyup", autocomplete);
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
{{ wtf.quick_form(form, novalidate=True) }}
|
{{ wtf.quick_form(form, novalidate=True) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
window.onload = function(e) {
|
window.onload = function(e) {
|
||||||
var etudiants_options = {
|
var etudiants_options = {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
{% block app_content %}
|
{% block app_content %}
|
||||||
{% if logs %}
|
{% if logs %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h3>Dernières opérations</h3>
|
<h3>Dernières opérations <a href="{{ url_for('entreprises.logs') }}">Voir tout</a></h3>
|
||||||
<ul>
|
<ul>
|
||||||
{% for log in logs %}
|
{% 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>
|
<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>
|
||||||
@ -12,6 +12,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>Liste des contacts</h1>
|
<h1>Liste des contacts</h1>
|
||||||
{% if contacts %}
|
{% if contacts %}
|
||||||
@ -26,7 +27,7 @@
|
|||||||
<th>Service</th>
|
<th>Service</th>
|
||||||
<th>Entreprise</th>
|
<th>Entreprise</th>
|
||||||
</tr>
|
</tr>
|
||||||
{% for contact in contacts %}
|
{% for contact in contacts.items %}
|
||||||
<tr class="table-row active">
|
<tr class="table-row active">
|
||||||
<th>{{ contact[0].nom }}</th>
|
<th>{{ contact[0].nom }}</th>
|
||||||
<th>{{ contact[0].prenom }}</th>
|
<th>{{ contact[0].prenom }}</th>
|
||||||
@ -38,10 +39,35 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<a href="{{ url_for('entreprises.contacts', page=contacts.prev_num) }}" class="btn btn-default {% if contacts.page == 1 %}disabled{% endif %}">
|
||||||
|
«
|
||||||
|
</a>
|
||||||
|
{% for page_num in contacts.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
|
||||||
|
{% if page_num %}
|
||||||
|
{% if contacts.page == page_num %}
|
||||||
|
<a href="{{ url_for('entreprises.contacts', page=page_num) }}" class="btn btn-inverse">{{ page_num }}</a>
|
||||||
|
{% else %}
|
||||||
|
<a href="{{ url_for('entreprises.contacts', page=page_num) }}" class="btn btn-default">{{ page_num }}</a>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
...
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
<a href="{{ url_for('entreprises.contacts', page=contacts.next_num) }}" class="btn btn-default {% if contacts.page == contacts.pages %}disabled{% endif %}">
|
||||||
|
»
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="text-center">
|
||||||
|
Page {{ contacts.page }} sur {{ contacts.pages }}
|
||||||
|
</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div>Aucun contact présent dans la base</div>
|
<div>Aucun contact présent dans la base</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesExport, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesExport, None) %}
|
||||||
<div>
|
<div>
|
||||||
{% if contacts %}
|
{% if contacts %}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
{% block app_content %}
|
{% block app_content %}
|
||||||
{% if logs %}
|
{% if logs %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h3>Dernières opérations</h3>
|
<h3>Dernières opérations <a href="{{ url_for('entreprises.logs') }}">Voir tout</a></h3>
|
||||||
<ul>
|
<ul>
|
||||||
{% for log in logs %}
|
{% 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>
|
<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>
|
||||||
@ -12,9 +12,10 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>Liste des entreprises</h1>
|
<h1>Liste des entreprises</h1>
|
||||||
{% if entreprises %}
|
{% if entreprises.items %}
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-bordered table-hover">
|
<table class="table table-bordered table-hover">
|
||||||
<tr>
|
<tr>
|
||||||
@ -28,7 +29,7 @@
|
|||||||
<th>Action</th>
|
<th>Action</th>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</tr>
|
</tr>
|
||||||
{% for entreprise in entreprises %}
|
{% for entreprise in entreprises.items %}
|
||||||
<tr class="table-row active">
|
<tr class="table-row active">
|
||||||
<th><a href="{{ url_for('entreprises.fiche_entreprise', id=entreprise.id) }}">{{ entreprise.siret }}</a></th>
|
<th><a href="{{ url_for('entreprises.fiche_entreprise', id=entreprise.id) }}">{{ entreprise.siret }}</a></th>
|
||||||
<th>{{ entreprise.nom }}</th>
|
<th>{{ entreprise.nom }}</th>
|
||||||
@ -52,11 +53,36 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<a href="{{ url_for('entreprises.index', page=entreprises.prev_num) }}" class="btn btn-default {% if entreprises.page == 1 %}disabled{% endif %}">
|
||||||
|
«
|
||||||
|
</a>
|
||||||
|
{% for page_num in entreprises.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
|
||||||
|
{% if page_num %}
|
||||||
|
{% if entreprises.page == page_num %}
|
||||||
|
<a href="{{ url_for('entreprises.index', page=page_num) }}" class="btn btn-inverse">{{ page_num }}</a>
|
||||||
|
{% else %}
|
||||||
|
<a href="{{ url_for('entreprises.index', page=page_num) }}" class="btn btn-default">{{ page_num }}</a>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
...
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
<a href="{{ url_for('entreprises.index', page=entreprises.next_num) }}" class="btn btn-default {% if entreprises.page == entreprises.pages %}disabled{% endif %}">
|
||||||
|
»
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="text-center">
|
||||||
|
Page {{ entreprises.page }} sur {{ entreprises.pages }}
|
||||||
|
</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div>Aucune entreprise présent dans la base</div>
|
<div>Aucune entreprise présent dans la base</div>
|
||||||
<br>
|
<br>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div style="margin-bottom: 20px;">
|
<div style="margin-bottom: 20px;">
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
<a class="btn btn-default" href="{{ url_for('entreprises.add_entreprise') }}">Ajouter une entreprise</a>
|
<a class="btn btn-default" href="{{ url_for('entreprises.add_entreprise') }}">Ajouter une entreprise</a>
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>Liste des entreprises à valider</h1>
|
<h1>Liste des entreprises à valider</h1>
|
||||||
{% if entreprises %}
|
{% if entreprises %}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
{{ wtf.quick_form(form, novalidate=True) }}
|
{{ wtf.quick_form(form, novalidate=True) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
window.onload = function(e) {
|
window.onload = function(e) {
|
||||||
var responsables_options = {
|
var responsables_options = {
|
||||||
|
@ -2,78 +2,80 @@
|
|||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
{% block app_content %}
|
{% block app_content %}
|
||||||
{% if logs %}
|
{% if logs %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h3>Dernières opérations sur cette fiche</h3>
|
<h3>Dernières opérations sur cette fiche</h3>
|
||||||
<ul>
|
<ul>
|
||||||
{% for log in logs %}
|
{% for log in logs %}
|
||||||
<li>
|
<li>
|
||||||
<span style="margin-right: 10px;">{{ log.date.strftime('%d %b %Hh%M') }}</span>
|
<span style="margin-right: 10px;">{{ log.date.strftime('%d %b %Hh%M') }}</span>
|
||||||
<span>{{ log.text|safe }} par {{ log.authenticated_user|get_nomcomplet }}</span>
|
<span>{{ log.text|safe }} par {{ log.authenticated_user|get_nomcomplet }}</span>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% if historique %}
|
|
||||||
<div class="container">
|
|
||||||
<h3>Historique</h3>
|
|
||||||
<ul>
|
|
||||||
{% for data in historique %}
|
|
||||||
<li>
|
|
||||||
<span style="margin-right: 10px;">{{ data[0].date_debut.strftime('%d/%m/%Y') }} - {{
|
|
||||||
data[0].date_fin.strftime('%d/%m/%Y') }}</span>
|
|
||||||
<span style="margin-right: 10px;">
|
|
||||||
{{ data[0].type_offre }} réalisé par {{ data[1].nom|format_nom }} {{ data[1].prenom|format_prenom }}
|
|
||||||
{% if data[0].formation_text %} en {{ data[0].formation_text }}{% endif %}
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<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}}
|
|
||||||
{% include 'entreprises/_contact.html' %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if offres %}
|
{% if historique %}
|
||||||
<div>
|
<div class="container">
|
||||||
{% for offre in offres %}
|
<h3>Historique</h3>
|
||||||
Offre {{loop.index}} (ajouté le {{offre[0].date_ajout.strftime('%d/%m/%Y') }})
|
<ul>
|
||||||
{% include 'entreprises/_offre.html' %}
|
{% for data in historique %}
|
||||||
{% endfor %}
|
<li>
|
||||||
|
<span style="margin-right: 10px;">{{ data[0].date_debut.strftime('%d/%m/%Y') }} - {{
|
||||||
|
data[0].date_fin.strftime('%d/%m/%Y') }}</span>
|
||||||
|
<span style="margin-right: 10px;">
|
||||||
|
{{ data[0].type_offre }} réalisé par {{ data[1].nom|format_nom }} {{ data[1].prenom|format_prenom }}
|
||||||
|
{% if data[0].formation_text %} en {{ data[0].formation_text }}{% endif %}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<h2>Fiche entreprise - {{ entreprise.nom }} ({{ entreprise.siret }})</h2>
|
||||||
|
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
<div>
|
||||||
<div>
|
<p>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_entreprise', id=entreprise.id) }}">Modifier</a>
|
SIRET : {{ entreprise.siret }}<br>
|
||||||
<a class="btn btn-danger" href="{{ url_for('entreprises.delete_entreprise', id=entreprise.id) }}">Supprimer</a>
|
Nom : {{ entreprise.nom }}<br>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.add_offre', id=entreprise.id) }}">Ajouter offre</a>
|
Adresse : {{ entreprise.adresse }}<br>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.add_contact', id=entreprise.id) }}">Ajouter contact</a>
|
Code postal : {{ entreprise.codepostal }}<br>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.add_historique', id=entreprise.id) }}">Ajouter
|
Ville : {{ entreprise.ville }}<br>
|
||||||
historique</a>
|
Pays : {{ entreprise.pays }}
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.offres_expirees', id=entreprise.id) }}">Voir les offres expirées</a>
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if contacts %}
|
||||||
|
<div>
|
||||||
|
{% for contact in contacts %}
|
||||||
|
Contact {{loop.index}}
|
||||||
|
{% include 'entreprises/_contact.html' %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if offres %}
|
||||||
|
<div>
|
||||||
|
{% for offre in offres %}
|
||||||
|
Offre {{loop.index}} (ajouté le {{offre[0].date_ajout.strftime('%d/%m/%Y') }})
|
||||||
|
{% include 'entreprises/_offre.html' %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
|
<div>
|
||||||
|
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_entreprise', id=entreprise.id) }}">Modifier</a>
|
||||||
|
<a class="btn btn-danger" href="{{ url_for('entreprises.delete_entreprise', id=entreprise.id) }}">Supprimer</a>
|
||||||
|
<a class="btn btn-primary" href="{{ url_for('entreprises.add_offre', id=entreprise.id) }}">Ajouter offre</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
|
||||||
|
historique</a>
|
||||||
|
<a class="btn btn-primary" href="{{ url_for('entreprises.offres_expirees', id=entreprise.id) }}">Voir les offres expirées</a>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
37
app/templates/entreprises/logs.html
Normal file
37
app/templates/entreprises/logs.html
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{# -*- mode: jinja-html -*- #}
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block app_content %}
|
||||||
|
<div class="container">
|
||||||
|
<h3>Dernières opérations</h3>
|
||||||
|
<ul>
|
||||||
|
{% for log in logs.items %}
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<a href="{{ url_for('entreprises.logs', page=logs.prev_num) }}" class="btn btn-default {% if logs.page == 1 %}disabled{% endif %}">
|
||||||
|
«
|
||||||
|
</a>
|
||||||
|
{% for page_num in logs.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
|
||||||
|
{% if page_num %}
|
||||||
|
{% if logs.page == page_num %}
|
||||||
|
<a href="{{ url_for('entreprises.logs', page=page_num) }}" class="btn btn-inverse">{{ page_num }}</a>
|
||||||
|
{% else %}
|
||||||
|
<a href="{{ url_for('entreprises.logs', page=page_num) }}" class="btn btn-default">{{ page_num }}</a>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
...
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
<a href="{{ url_for('entreprises.logs', page=logs.next_num) }}" class="btn btn-default {% if logs.page == logs.pages %}disabled{% endif %}">
|
||||||
|
»
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="text-center">
|
||||||
|
Page {{ logs.page }} sur {{ logs.pages }}
|
||||||
|
</p>
|
||||||
|
{% endblock %}
|
@ -2,15 +2,15 @@
|
|||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
{% 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 %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<div>Aucune offre expirées</div>
|
<div>Aucune offre expirées</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -2,9 +2,9 @@
|
|||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
{% block app_content %}
|
{% block app_content %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>{{ title }}</h1>
|
<h1>{{ title }}</h1>
|
||||||
{% if offres_recus %}
|
{% if offres_recus %}
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<div>
|
<div>
|
||||||
{% for offre in offres_recus %}
|
{% for offre in offres_recus %}
|
||||||
@ -25,5 +25,5 @@
|
|||||||
<div>Aucune offre reçue</div>
|
<div>Aucune offre reçue</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
Loading…
Reference in New Issue
Block a user