From 2d9e428ebfac54d77dee7f3bd13b4abfbfdb47f6 Mon Sep 17 00:00:00 2001 From: Arthur ZHU Date: Mon, 31 Jan 2022 18:22:54 +0100 Subject: [PATCH] ajout pagination + nettoyage --- app/entreprises/__init__.py | 2 +- app/entreprises/routes.py | 159 ++++-------------- app/static/css/entreprises.css | 11 ++ app/templates/base.html | 4 + .../entreprises/ajout_entreprise.html | 3 +- .../entreprises/ajout_historique.html | 1 + app/templates/entreprises/contacts.html | 30 +++- app/templates/entreprises/entreprises.html | 32 +++- .../entreprises/entreprises_validation.html | 1 + .../entreprises/envoi_offre_form.html | 1 + .../entreprises/fiche_entreprise.html | 136 +++++++-------- app/templates/entreprises/logs.html | 37 ++++ .../entreprises/offres_expirees.html | 22 +-- app/templates/entreprises/offres_recues.html | 8 +- 14 files changed, 235 insertions(+), 212 deletions(-) create mode 100644 app/static/css/entreprises.css create mode 100644 app/templates/entreprises/logs.html diff --git a/app/entreprises/__init__.py b/app/entreprises/__init__.py index 44968ffb1..813fd73b6 100644 --- a/app/entreprises/__init__.py +++ b/app/entreprises/__init__.py @@ -7,7 +7,7 @@ from app.auth.models import User bp = Blueprint("entreprises", __name__) -LOGS_LEN = 10 +LOGS_LEN = 5 @bp.app_template_filter() diff --git a/app/entreprises/routes.py b/app/entreprises/routes.py index 651184920..a6f91813b 100644 --- a/app/entreprises/routes.py +++ b/app/entreprises/routes.py @@ -48,17 +48,11 @@ from werkzeug.utils import secure_filename def index(): """ 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() return render_template( "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"]) @permission_required(Permission.RelationsEntreprisesValidate) def validation_entreprise(): + """ + Permet d'afficher une page avec la liste des entreprises a valider + """ entreprises = Entreprise.query.filter_by(visible=False).all() return render_template( "entreprises/entreprises_validation.html", @@ -84,21 +96,13 @@ def validation_entreprise(): def contacts(): """ 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 = ( db.session.query(EntrepriseContact, Entreprise) .join(Entreprise, EntrepriseContact.entreprise_id == Entreprise.id) .filter_by(visible=True) - .all() + .paginate(page=page, per_page=10) ) logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all() 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. La fiche entreprise comporte les informations de l'entreprise, les contacts de l'entreprise et 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() offres = entreprise.offres @@ -183,6 +168,9 @@ def fiche_entreprise(id): @bp.route("/fiche_entreprise_validation/", methods=["GET"]) @permission_required(Permission.RelationsEntreprisesValidate) 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() contacts = entreprise.contacts return render_template( @@ -198,13 +186,6 @@ def fiche_entreprise_validation(id): def offres_recues(): """ 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 = ( db.session.query(EntrepriseEnvoiOffre, EntrepriseOffre) @@ -222,6 +203,9 @@ def offres_recues(): @bp.route("/fiche_entreprise//offres_expirees") @permission_required(Permission.RelationsEntreprisesView) 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() offres = entreprise.offres offres_expirees_with_files = [] @@ -290,7 +274,7 @@ def add_entreprise(): return redirect(url_for("entreprises.index")) return render_template( "entreprises/ajout_entreprise.html", - title=("Ajout entreprise + contact"), + title=("Ajout entreprise avec contact"), form=form, ) @@ -300,10 +284,6 @@ def add_entreprise(): def edit_entreprise(id): """ 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() form = EntrepriseModificationForm() @@ -369,10 +349,6 @@ def edit_entreprise(id): def delete_entreprise(id): """ 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() form = SuppressionConfirmationForm() @@ -397,6 +373,9 @@ def delete_entreprise(id): @bp.route("/validate_entreprise/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesValidate) def validate_entreprise(id): + """ + Permet de valider une entreprise + """ entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404() entreprise.visible = True db.session.commit() @@ -408,10 +387,6 @@ def validate_entreprise(id): def add_offre(id): """ 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() form = OffreCreationForm() @@ -443,10 +418,6 @@ def add_offre(id): def edit_offre(id): """ Permet de modifier une offre - - Arguments: - id: - l'id de l'offre """ offre = EntrepriseOffre.query.filter_by(id=id).first_or_404() form = OffreModificationForm() @@ -483,10 +454,6 @@ def edit_offre(id): def delete_offre(id): """ Permet de supprimer une offre - - Arguments: - id: - l'id de l'offre """ offre = EntrepriseOffre.query.filter_by(id=id).first_or_404() entreprise_id = offre.entreprise.id @@ -512,10 +479,6 @@ def delete_offre(id): def add_contact(id): """ 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() form = ContactCreationForm(hidden_entreprise_id=entreprise.id) @@ -547,10 +510,6 @@ def add_contact(id): def edit_contact(id): """ Permet de modifier un contact - - Arguments: - id: - l'id du contact """ contact = EntrepriseContact.query.filter_by(id=id).first_or_404() form = ContactModificationForm() @@ -589,10 +548,6 @@ def edit_contact(id): def delete_contact(id): """ Permet de supprimer un contact - - Arguments: - id: - l'id du contact """ contact = EntrepriseContact.query.filter_by(id=id).first_or_404() entreprise_id = contact.entreprise.id @@ -627,10 +582,6 @@ def delete_contact(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 - - Arguments: - id: - l'id de l'entreprise """ entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404() form = HistoriqueCreationForm() @@ -672,10 +623,6 @@ def add_historique(id): def envoyer_offre(id): """ Permet d'envoyer une offre à un utilisateur - - Arguments: - id: - l'id de l'offre """ offre = EntrepriseOffre.query.filter_by(id=id).first_or_404() form = EnvoiOffreForm() @@ -706,13 +653,6 @@ def envoyer_offre(id): def json_etudiants(): """ 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: abort(400) @@ -740,13 +680,6 @@ def json_etudiants(): def json_responsables(): """ 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: abort(400) @@ -792,7 +725,7 @@ def export_contacts(): """ 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: keys = ["nom", "prenom", "telephone", "mail", "poste", "service"] titles = keys[:] @@ -811,7 +744,7 @@ def export_contacts_bis(): """ 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: keys = [ "nom", @@ -846,16 +779,6 @@ def export_contacts_bis(): def get_offre_file(entreprise_id, offre_id, filedir, filename): """ 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( os.path.join( @@ -887,10 +810,6 @@ def get_offre_file(entreprise_id, offre_id, filedir, filename): def add_offre_file(offre_id): """ 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() form = AjoutFichierForm() @@ -919,12 +838,6 @@ def add_offre_file(offre_id): def delete_offre_file(offre_id, filedir): """ 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() form = SuppressionConfirmationForm() diff --git a/app/static/css/entreprises.css b/app/static/css/entreprises.css new file mode 100644 index 000000000..6dded2fa4 --- /dev/null +++ b/app/static/css/entreprises.css @@ -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; +} \ No newline at end of file diff --git a/app/templates/base.html b/app/templates/base.html index adf70171b..176e4b993 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -4,6 +4,7 @@ {% block styles %} {{super()}} + {% endblock %} {% block title %} @@ -35,6 +36,9 @@ url_for('scolar.index_html', scodoc_dept=g.scodoc_dept) }}">Dept. {{ g.scodoc_dept }} {% endif %} + {% if not current_user.is_anonymous and current_user.has_permission(current_user.Permission.RelationsEntreprisesView, None) %} +
  • Entreprises
  • + {% endif %}