ajout pagination + nettoyage

This commit is contained in:
Arthur ZHU 2022-01-31 18:22:54 +01:00
parent 2207d25e35
commit 2d9e428ebf
14 changed files with 235 additions and 212 deletions

View File

@ -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()

View File

@ -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()

View 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;
}

View File

@ -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 %}

View File

@ -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);

View File

@ -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 = {

View File

@ -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 %}">
&laquo;
</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 %}">
&raquo;
</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 %}

View File

@ -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 %}">
&laquo;
</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 %}">
&raquo;
</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>

View File

@ -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 %}

View File

@ -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 = {

View File

@ -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 %}
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %} <div class="container">
<div> <h2>Fiche entreprise - {{ entreprise.nom }} ({{ entreprise.siret }})</h2>
<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> <div>
<a class="btn btn-primary" href="{{ url_for('entreprises.add_offre', id=entreprise.id) }}">Ajouter offre</a> <p>
<a class="btn btn-primary" href="{{ url_for('entreprises.add_contact', id=entreprise.id) }}">Ajouter contact</a> SIRET : {{ entreprise.siret }}<br>
<a class="btn btn-primary" href="{{ url_for('entreprises.add_historique', id=entreprise.id) }}">Ajouter Nom : {{ entreprise.nom }}<br>
historique</a> Adresse : {{ entreprise.adresse }}<br>
<a class="btn btn-primary" href="{{ url_for('entreprises.offres_expirees', id=entreprise.id) }}">Voir les offres expirées</a> 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>
{% 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 %}

View 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 %}">
&laquo;
</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 %}">
&raquo;
</a>
</div>
<p class="text-center">
Page {{ logs.page }} sur {{ logs.pages }}
</p>
{% endblock %}

View File

@ -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 %}

View File

@ -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 %}