supprime fichiers lors des suppressions, correctifs

This commit is contained in:
Arthur ZHU 2022-02-08 16:40:32 +01:00
parent 442e1a35c9
commit 6d7a7a7c4b
13 changed files with 152 additions and 92 deletions

View File

@ -1,4 +1,5 @@
import os
from queue import Empty
from config import Config
from datetime import datetime, date
import glob
@ -75,7 +76,11 @@ def logs():
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).paginate(
page=page, per_page=20
)
return render_template("entreprises/logs.html", title=("Logs"), logs=logs)
return render_template(
"entreprises/logs.html",
title=("Logs"),
logs=logs,
)
@bp.route("/validation", methods=["GET"])
@ -107,7 +112,10 @@ def contacts():
)
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
return render_template(
"entreprises/contacts.html", title=("Contacts"), contacts=contacts, logs=logs
"entreprises/contacts.html",
title=("Contacts"),
contacts=contacts,
logs=logs,
)
@ -392,7 +400,9 @@ def edit_entreprise(id):
form.ville.data = entreprise.ville
form.pays.data = entreprise.pays
return render_template(
"entreprises/form.html", title=("Modification entreprise"), form=form
"entreprises/form.html",
title=("Modification entreprise"),
form=form,
)
@ -406,6 +416,14 @@ def delete_entreprise(id):
form = SuppressionConfirmationForm()
if form.validate_on_submit():
db.session.delete(entreprise)
# supprime les fichiers attachés aux offres
path = os.path.join(
Config.SCODOC_VAR_DIR,
"entreprises",
f"{entreprise.id}",
)
if os.path.isdir(path):
shutil.rmtree(path)
log = EntrepriseLog(
authenticated_user=current_user.user_name,
object=entreprise.id,
@ -484,7 +502,11 @@ def add_offre(id):
db.session.commit()
flash("L'offre a été ajouté à la fiche entreprise.")
return redirect(url_for("entreprises.fiche_entreprise", id=entreprise.id))
return render_template("entreprises/form.html", title=("Ajout offre"), form=form)
return render_template(
"entreprises/form.html",
title=("Ajout offre"),
form=form,
)
@bp.route("/edit_offre/<int:id>", methods=["GET", "POST"])
@ -536,7 +558,9 @@ def edit_offre(id):
form.expiration_date.data = offre.expiration_date
form.depts.data = offre_depts_list
return render_template(
"entreprises/form.html", title=("Modification offre"), form=form
"entreprises/form.html",
title=("Modification offre"),
form=form,
)
@ -551,6 +575,14 @@ def delete_offre(id):
form = SuppressionConfirmationForm()
if form.validate_on_submit():
db.session.delete(offre)
path = os.path.join(
Config.SCODOC_VAR_DIR,
"entreprises",
f"{entreprise_id}",
f"{offre.id}",
)
if os.path.isdir(path):
shutil.rmtree(path)
log = EntrepriseLog(
authenticated_user=current_user.user_name,
object=offre.entreprise_id,
@ -561,7 +593,9 @@ def delete_offre(id):
flash("L'offre a été supprimé de la fiche entreprise.")
return redirect(url_for("entreprises.fiche_entreprise", id=entreprise_id))
return render_template(
"entreprises/delete_confirmation.html", title=("Supression offre"), form=form
"entreprises/delete_confirmation.html",
title=("Supression offre"),
form=form,
)
@ -593,7 +627,11 @@ def add_contact(id):
db.session.commit()
flash("Le contact a été ajouté à la fiche entreprise.")
return redirect(url_for("entreprises.fiche_entreprise", id=entreprise.id))
return render_template("entreprises/form.html", title=("Ajout contact"), form=form)
return render_template(
"entreprises/form.html",
title=("Ajout contact"),
form=form,
)
@bp.route("/edit_contact/<int:id>", methods=["GET", "POST"])
@ -633,7 +671,9 @@ def edit_contact(id):
form.poste.data = contact.poste
form.service.data = contact.service
return render_template(
"entreprises/form.html", title=("Modification contact"), form=form
"entreprises/form.html",
title=("Modification contact"),
form=form,
)
@ -667,7 +707,9 @@ def delete_contact(id):
flash("Le contact a été supprimé de la fiche entreprise.")
return redirect(url_for("entreprises.fiche_entreprise", id=entreprise_id))
return render_template(
"entreprises/delete_confirmation.html", title=("Supression contact"), form=form
"entreprises/delete_confirmation.html",
title=("Supression contact"),
form=form,
)
@ -708,7 +750,9 @@ def add_historique(id):
flash("L'étudiant a été ajouté sur la fiche entreprise.")
return redirect(url_for("entreprises.fiche_entreprise", id=entreprise.id))
return render_template(
"entreprises/ajout_historique.html", title=("Ajout historique"), form=form
"entreprises/ajout_historique.html",
title=("Ajout historique"),
form=form,
)
@ -738,7 +782,9 @@ def envoyer_offre(id):
flash(f"L'offre a été envoyé à {responsable.get_nomplogin()}.")
return redirect(url_for("entreprises.fiche_entreprise", id=offre.entreprise_id))
return render_template(
"entreprises/envoi_offre_form.html", title=("Envoyer une offre"), form=form
"entreprises/envoi_offre_form.html",
title=("Envoyer une offre"),
form=form,
)
@ -840,6 +886,9 @@ def get_import_entreprises_file_sample():
@bp.route("/import_entreprises", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesExport)
def import_entreprises():
"""
Permet d'importer des entreprises a l'aide d'un fichier excel (.xlsx)
"""
form = ImportEntreprisesForm()
if form.validate_on_submit():
path = os.path.join(Config.SCODOC_VAR_DIR, "tmp")
@ -974,7 +1023,9 @@ def add_offre_file(offre_id):
flash("Le fichier a été ajouté a l'offre.")
return redirect(url_for("entreprises.fiche_entreprise", id=offre.entreprise_id))
return render_template(
"entreprises/form.html", title=("Ajout fichier à une offre"), form=form
"entreprises/form.html",
title=("Ajout fichier à une offre"),
form=form,
)

View File

@ -3,7 +3,7 @@
{% import 'bootstrap/wtf.html' as wtf %}
{% block app_content %}
<h1>{{ title }}</h1>
<h1>Ajout entreprise avec contact</h1>
<br>
<div class="row">
<div class="col-md-4">

View File

@ -9,7 +9,7 @@
{% endblock %}
{% block app_content %}
<h1>{{ title }}</h1>
<h1>Ajout historique</h1>
<br>
<div class="row">
<div class="col-md-4">

View File

@ -75,7 +75,7 @@
Page {{ contacts.page }} sur {{ contacts.pages }}
</p>
{% else %}
<div>Aucun contact présent dans la base</div>
<div>Aucun contact présent dans la base</div>
{% endif %}
</div>
{% endblock %}

View File

@ -95,7 +95,7 @@
Page {{ entreprises.page }} sur {{ entreprises.pages }}
</p>
{% else %}
<div>Aucune entreprise présent dans la base</div>
<div>Aucune entreprise présent dans la base</div>
{% endif %}
</div>
{% endblock %}

View File

@ -43,10 +43,9 @@
</tr>
{% endfor %}
</table>
{% else %}
<div>Aucune entreprise à valider</div>
<br>
</div>
{% else %}
<div>Aucune entreprise à valider</div>
{% endif %}
</div>
{% endblock %}

View File

@ -9,7 +9,7 @@
{% endblock %}
{% block app_content %}
<h1>{{ title }}</h1>
<h1>Envoyer une offre</h1>
<br>
<div class="row">
<div class="col-md-4">

View File

@ -24,8 +24,12 @@
<div class="contact">
Nom : {{ contact.nom }}<br>
Prénom : {{ contact.prenom }}<br>
{% if contact.telephone %}
Téléphone : {{ contact.telephone }}<br>
{% endif %}
{% if contact.mail %}
Mail : {{ contact.mail }}<br>
{% endif %}
{% if contact.poste %}
Poste : {{ contact.poste }}<br>
{% endif %}

View File

@ -7,7 +7,7 @@
{% endblock %}
{% block app_content %}
<h1>{{ title }}</h1>
<h1>Importation entreprises</h1>
<br>
<div>
<a href="{{ url_for('entreprises.get_import_entreprises_file_sample') }}">Obtenir la feuille excel à remplir</a>

View File

@ -4,34 +4,40 @@
{% 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>
{% if logs.items %}
<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 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>
<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 %}
<a href="{{ url_for('entreprises.logs', page=page_num) }}" class="btn btn-default">{{ page_num }}</a>
...
{% 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>
{% else %}
...
<div>Aucune opération</div>
{% 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

@ -4,34 +4,39 @@
{% block app_content %}
<div class="container">
<h3>Dernières opérations - {{ entreprise.nom }}</h3>
{% if logs.items %}
<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_entreprise', id=entreprise.id, 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_entreprise', id=entreprise.id, page=page_num) }}" class="btn btn-inverse">{{ page_num }}</a>
{% else %}
<a href="{{ url_for('entreprises.logs_entreprise', id=entreprise.id, page=page_num) }}" class="btn btn-default">{{ page_num }}</a>
{% endif %}
<div class="text-center">
<a href="{{ url_for('entreprises.logs_entreprise', id=entreprise.id, 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_entreprise', id=entreprise.id, page=page_num) }}" class="btn btn-inverse">{{ page_num }}</a>
{% else %}
<a href="{{ url_for('entreprises.logs_entreprise', id=entreprise.id, page=page_num) }}" class="btn btn-default">{{ page_num }}</a>
{% endif %}
{% else %}
...
{% endif %}
{% endfor %}
<a href="{{ url_for('entreprises.logs_entreprise', id=entreprise.id, 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>
{% else %}
...
<div>Aucune opération</div>
{% endif %}
{% endfor %}
<a href="{{ url_for('entreprises.logs_entreprise', id=entreprise.id, 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

@ -5,31 +5,26 @@
{% include 'entreprises/nav.html' %}
<div class="container">
<h1>{{ title }}</h1>
<h1>Offres reçues</h1>
{% if offres_recues %}
<div class="table-responsive">
<div>
{% for offre in offres_recues %}
<div class="offre">
<div>
Envoyé le {{ offre[0].date_envoi.strftime('%d %B %Y à %H:%M') }} par {{ offre[0].sender_id|get_nomcomplet_by_id }}<br>
Intitulé : {{ offre[1].intitule }}<br>
Description : {{ offre[1].description }}<br>
Type de l'offre : {{ offre[1].type_offre }}<br>
Missions : {{ offre[1].missions }}<br>
Durée : {{ offre[1].duree }}<br>
<div class="offre">
<div>
Envoyé le {{ offre[0].date_envoi.strftime('%d %B %Y à %H:%M') }} par {{ offre[0].sender_id|get_nomcomplet_by_id }}<br>
Intitulé : {{ offre[1].intitule }}<br>
Description : {{ offre[1].description }}<br>
Type de l'offre : {{ offre[1].type_offre }}<br>
Missions : {{ offre[1].missions }}<br>
Durée : {{ offre[1].duree }}<br>
{% for fichier in offre[2] %}
<a href="{{ url_for('entreprises.get_offre_file', entreprise_id=offre[1].entreprise_id, offre_id=offre[1].id, filedir=fichier[0], filename=fichier[1] )}}">{{ fichier[1] }}</a><br>
{% endfor %}
</div>
{% for fichier in offre[2] %}
<a href="{{ url_for('entreprises.get_offre_file', entreprise_id=offre[1].entreprise_id, offre_id=offre[1].id, filedir=fichier[0], filename=fichier[1] )}}">{{ fichier[1] }}</a><br>
{% endfor %}
</div>
{% endfor %}
</div>
<br>
{% else %}
{% endfor %}
{% else %}
<div>Aucune offre reçue</div>
</div>
{% endif %}
</div>
{% endblock %}

View File

@ -3,7 +3,7 @@
{% import 'bootstrap/wtf.html' as wtf %}
{% block app_content %}
<h1>{{ title }}</h1>
<h1>Validation entreprise</h1>
<br>
<div style="color:green;">Cliquez sur le bouton Valider pour confirmer votre validation</div>
<br>