1
0
forked from ScoDoc/ScoDoc

suppression contact, ajout opérations historique, correctifs

This commit is contained in:
Arthur ZHU 2022-07-20 18:24:15 +02:00
parent ea73c050e6
commit 25957e04fa
6 changed files with 164 additions and 33 deletions

View File

@ -86,6 +86,7 @@ def _build_string_field(label, required=True, render_kw=None):
class EntreprisesFilterForm(FlaskForm): class EntreprisesFilterForm(FlaskForm):
active = BooleanField("Toutes les entreprises") active = BooleanField("Toutes les entreprises")
association = BooleanField("Seulement les associations partenaires") association = BooleanField("Seulement les associations partenaires")
siret_provisoire = BooleanField("Seulement SIRET provisoire")
class EntrepriseCreationForm(FlaskForm): class EntrepriseCreationForm(FlaskForm):

View File

@ -74,16 +74,20 @@ def index():
.limit(LOGS_LEN) .limit(LOGS_LEN)
.all() .all()
) )
if current_user.has_permission(Permission.RelationsEntreprisesChange, None):
form = EntreprisesFilterForm() form = EntreprisesFilterForm()
checked = [False, False] checked = [False, False, False]
if request.method == "POST": if request.method == "POST":
checked[0] = form.active.data checked = [form.active.data, form.association.data, form.siret_provisoire.data]
checked[1] = form.association.data
if checked[0]: if checked[0]:
entreprises = Entreprise.query.filter_by(visible=True) entreprises = Entreprise.query.filter_by(visible=True)
if checked[1]: if checked[1]:
entreprises = Entreprise.query.filter_by(association=True) entreprises = Entreprise.query.filter_by(association=True)
if checked[2]:
entreprises = Entreprise.query.filter_by(siret_provisoire=True)
if checked[1] and checked[2]:
entreprises = Entreprise.query.filter_by(
association=True, siret_provisoire=True
)
return render_template( return render_template(
"entreprises/entreprises.html", "entreprises/entreprises.html",
title="Entreprises", title="Entreprises",
@ -92,12 +96,6 @@ def index():
form=form, form=form,
checked=checked, checked=checked,
) )
return render_template(
"entreprises/entreprises.html",
title="Entreprises",
entreprises=entreprises,
logs=logs,
)
@bp.route("/logs", methods=["GET"]) @bp.route("/logs", methods=["GET"])
@ -182,7 +180,6 @@ def fiche_entreprise(entreprise_id):
offre_with_files = are.get_offre_files_and_depts(offre, depts) offre_with_files = are.get_offre_files_and_depts(offre, depts)
if offre_with_files is not None: if offre_with_files is not None:
offres_with_files.append(offre_with_files) offres_with_files.append(offre_with_files)
sites = entreprise.sites[:]
logs = ( logs = (
EntrepriseHistorique.query.order_by(EntrepriseHistorique.date.desc()) EntrepriseHistorique.query.order_by(EntrepriseHistorique.date.desc())
.filter(EntrepriseHistorique.entreprise_id == entreprise.id) .filter(EntrepriseHistorique.entreprise_id == entreprise.id)
@ -205,7 +202,6 @@ def fiche_entreprise(entreprise_id):
"entreprises/fiche_entreprise.html", "entreprises/fiche_entreprise.html",
title="Fiche entreprise", title="Fiche entreprise",
entreprise=entreprise, entreprise=entreprise,
sites=sites,
offres=offres_with_files, offres=offres_with_files,
logs=logs, logs=logs,
stages_apprentissages=stages_apprentissages, stages_apprentissages=stages_apprentissages,
@ -247,12 +243,10 @@ def fiche_entreprise_validation(entreprise_id):
).first_or_404( ).first_or_404(
description=f"fiche entreprise (validation) {entreprise_id} inconnue" description=f"fiche entreprise (validation) {entreprise_id} inconnue"
) )
sites = entreprise.sites[:]
return render_template( return render_template(
"entreprises/fiche_entreprise_validation.html", "entreprises/fiche_entreprise_validation.html",
title="Validation fiche entreprise", title="Validation fiche entreprise",
entreprise=entreprise, entreprise=entreprise,
sites=sites,
) )
@ -424,6 +418,7 @@ def edit_entreprise(entreprise_id):
if form.new_siret.data: if form.new_siret.data:
logs_text.append(f"{lien_entreprise} - Modification du SIRET") logs_text.append(f"{lien_entreprise} - Modification du SIRET")
entreprise.siret = form.new_siret.data.strip() entreprise.siret = form.new_siret.data.strip()
entreprise.siret_provisoire = False
if entreprise.nom != form.nom.data.strip(): if entreprise.nom != form.nom.data.strip():
logs_text.append( logs_text.append(
f"{lien_entreprise} - Modification du nom (ancien nom: {entreprise.nom})" f"{lien_entreprise} - Modification du nom (ancien nom: {entreprise.nom})"
@ -458,13 +453,12 @@ def edit_entreprise(entreprise_id):
entreprise.association = form.association.data entreprise.association = form.association.data
for log_text in logs_text: for log_text in logs_text:
db.session.add( log = EntrepriseHistorique(
EntrepriseHistorique(
authenticated_user=current_user.user_name, authenticated_user=current_user.user_name,
entreprise_id=entreprise.id, entreprise_id=entreprise.id,
text=log_text, text=log_text,
) )
) db.session.add(log)
db.session.commit() db.session.commit()
flash("L'entreprise a été modifié.") flash("L'entreprise a été modifié.")
return redirect( return redirect(
@ -498,6 +492,13 @@ def fiche_entreprise_desactiver(entreprise_id):
if form.validate_on_submit(): if form.validate_on_submit():
entreprise.notes_active = form.notes_active.data.strip() entreprise.notes_active = form.notes_active.data.strip()
entreprise.active = False entreprise.active = False
lien_entreprise = f"<a href='{url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id)}'>{entreprise.nom}</a>"
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=entreprise.id,
text=f"{lien_entreprise} - Désactivation fiche entreprise",
)
db.session.add(log)
db.session.commit() db.session.commit()
flash("L'entreprise a été désactivé.") flash("L'entreprise a été désactivé.")
return redirect( return redirect(
@ -523,6 +524,13 @@ def fiche_entreprise_activer(entreprise_id):
form = ActivationConfirmationForm() form = ActivationConfirmationForm()
if form.validate_on_submit(): if form.validate_on_submit():
entreprise.active = True entreprise.active = True
lien_entreprise = f"<a href='{url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id)}'>{entreprise.nom}</a>"
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=entreprise.id,
text=f"{lien_entreprise} - Activation fiche entreprise",
)
db.session.add(log)
db.session.commit() db.session.commit()
flash("L'entreprise a été activé.") flash("L'entreprise a été activé.")
return redirect( return redirect(
@ -557,6 +565,16 @@ def add_taxe_apprentissage(entreprise_id):
) )
db.session.add(taxe) db.session.add(taxe)
db.session.commit() db.session.commit()
db.session.refresh(taxe)
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=entreprise.id,
object="taxe apprentissage",
object_id=taxe.id,
text=f"Création d'une taxe d'apprentissage",
)
db.session.add(log)
db.session.commit()
return redirect( return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise.id) url_for("entreprises.fiche_entreprise", entreprise_id=entreprise.id)
) )
@ -584,6 +602,14 @@ def edit_taxe_apprentissage(entreprise_id, taxe_id):
if form.validate_on_submit(): if form.validate_on_submit():
taxe.montant = form.montant.data taxe.montant = form.montant.data
taxe.notes = form.notes.data.strip() taxe.notes = form.notes.data.strip()
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=taxe.entreprise_id,
object="taxe apprentissage",
object_id=taxe.id,
text=f"Modification d'une taxe d'apprentissage",
)
db.session.add(log)
db.session.commit() db.session.commit()
return redirect( return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=taxe.entreprise_id) url_for("entreprises.fiche_entreprise", entreprise_id=taxe.entreprise_id)
@ -614,6 +640,14 @@ def delete_taxe_apprentissage(entreprise_id, taxe_id):
form = SuppressionConfirmationForm() form = SuppressionConfirmationForm()
if form.validate_on_submit(): if form.validate_on_submit():
db.session.delete(taxe) db.session.delete(taxe)
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=taxe.entreprise_id,
object="taxe apprentissage",
object_id=taxe.id,
text=f"Suppression d'une taxe d'apprentissage",
)
db.session.add(log)
db.session.commit() db.session.commit()
flash("La taxe d'apprentissage a été supprimé de la liste.") flash("La taxe d'apprentissage a été supprimé de la liste.")
return redirect( return redirect(
@ -675,6 +709,12 @@ def delete_validation_entreprise(entreprise_id):
if form.validate_on_submit(): if form.validate_on_submit():
db.session.delete(entreprise) db.session.delete(entreprise)
db.session.commit() db.session.commit()
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=entreprise.id,
text=f"Non validation de la fiche entreprise ({entreprise.nom})",
)
db.session.add(log)
flash("L'entreprise a été supprimé de la liste des entreprise à valider.") flash("L'entreprise a été supprimé de la liste des entreprise à valider.")
return redirect(url_for("entreprises.validation")) return redirect(url_for("entreprises.validation"))
return render_template( return render_template(
@ -921,7 +961,6 @@ def add_site(entreprise_id):
).first_or_404(description=f"entreprise {entreprise_id} inconnue") ).first_or_404(description=f"entreprise {entreprise_id} inconnue")
form = SiteCreationForm(hidden_entreprise_id=entreprise.id) form = SiteCreationForm(hidden_entreprise_id=entreprise.id)
if form.validate_on_submit(): if form.validate_on_submit():
lien_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{entreprise.nom} - {form.nom.data.strip()}</a>"
site = EntrepriseSite( site = EntrepriseSite(
entreprise_id=entreprise.id, entreprise_id=entreprise.id,
nom=form.nom.data.strip(), nom=form.nom.data.strip(),
@ -933,6 +972,7 @@ def add_site(entreprise_id):
db.session.add(site) db.session.add(site)
db.session.commit() db.session.commit()
db.session.refresh(site) db.session.refresh(site)
lien_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{entreprise.nom} - {form.nom.data.strip()}</a>"
log = EntrepriseHistorique( log = EntrepriseHistorique(
authenticated_user=current_user.user_name, authenticated_user=current_user.user_name,
entreprise_id=entreprise.id, entreprise_id=entreprise.id,
@ -972,6 +1012,14 @@ def edit_site(entreprise_id, site_id):
site.codepostal = form.codepostal.data.strip() site.codepostal = form.codepostal.data.strip()
site.ville = form.ville.data.strip() site.ville = form.ville.data.strip()
site.pays = (form.pays.data.strip() if form.pays.data.strip() else "FRANCE",) site.pays = (form.pays.data.strip() if form.pays.data.strip() else "FRANCE",)
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=site.entreprise_id,
object="site",
object_id=site.id,
text="Modification d'un site",
)
db.session.add(log)
db.session.commit() db.session.commit()
return redirect( return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=site.entreprise_id) url_for("entreprises.fiche_entreprise", entreprise_id=site.entreprise_id)
@ -1003,7 +1051,6 @@ def add_correspondant(entreprise_id, site_id):
).first_or_404( ).first_or_404(
description=f"site {site_id} inconnue pour l'entreprise {entreprise_id}" description=f"site {site_id} inconnue pour l'entreprise {entreprise_id}"
) )
print(site.entreprise_id)
form = CorrespondantsCreationForm(hidden_site_id=site.id) form = CorrespondantsCreationForm(hidden_site_id=site.id)
if form.validate_on_submit(): if form.validate_on_submit():
for correspondant_entry in form.correspondants.entries: for correspondant_entry in form.correspondants.entries:
@ -1204,6 +1251,16 @@ def add_contact(entreprise_id):
) )
db.session.add(contact) db.session.add(contact)
db.session.commit() db.session.commit()
db.session.refresh(contact)
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=contact.entreprise,
object="contact",
object_id=contact.id,
text="Création d'un contact",
)
db.session.add(log)
db.session.commit()
return redirect(url_for("entreprises.contacts", entreprise_id=entreprise.id)) return redirect(url_for("entreprises.contacts", entreprise_id=entreprise.id))
return render_template( return render_template(
"entreprises/form.html", "entreprises/form.html",
@ -1240,6 +1297,14 @@ def edit_contact(entreprise_id, contact_id):
contact.date = form.date.data contact.date = form.date.data
contact.user = utilisateur.id contact.user = utilisateur.id
contact.notes = form.notes.data contact.notes = form.notes.data
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=contact.entreprise,
object="contact",
object_id=contact.id,
text="Modification d'un contact",
)
db.session.add(log)
db.session.commit() db.session.commit()
return redirect( return redirect(
url_for("entreprises.contacts", entreprise_id=contact.entreprise) url_for("entreprises.contacts", entreprise_id=contact.entreprise)
@ -1258,6 +1323,43 @@ def edit_contact(entreprise_id, contact_id):
) )
@bp.route(
"/fiche_entreprise/<int:entreprise_id>/contacts/delete_contact/<int:contact_id>",
methods=["GET", "POST"],
)
@permission_required(Permission.RelationsEntreprisesChange)
def delete_contact(entreprise_id, contact_id):
"""
Permet de supprimer un contact
"""
contact = EntrepriseContact.query.filter_by(
id=contact_id, entreprise=entreprise_id
).first_or_404(
description=f"contact {contact_id} inconnu pour l'entreprise {entreprise_id}"
)
form = SuppressionConfirmationForm()
if form.validate_on_submit():
db.session.delete(contact)
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=contact.entreprise,
object="contact",
object_id=contact.id,
text="Suppression d'un contact",
)
db.session.add(log)
db.session.commit()
return redirect(
url_for("entreprises.contacts", entreprise_id=contact.entreprise)
)
return render_template(
"entreprises/form_confirmation.html",
title="Supression contact",
form=form,
info_message="Cliquez sur le bouton Supprimer pour confirmer votre supression",
)
@bp.route("/fiche_entreprise/<int:entreprise_id>/contacts") @bp.route("/fiche_entreprise/<int:entreprise_id>/contacts")
@permission_required(Permission.RelationsEntreprisesView) @permission_required(Permission.RelationsEntreprisesView)
def contacts(entreprise_id): def contacts(entreprise_id):
@ -1316,6 +1418,16 @@ def add_stage_apprentissage(entreprise_id):
) )
db.session.add(stage_apprentissage) db.session.add(stage_apprentissage)
db.session.commit() db.session.commit()
db.session.refresh(stage_apprentissage)
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=stage_apprentissage.entreprise_id,
object="stage apprentissage",
object_id=stage_apprentissage.id,
text="Création d'un stage/apprentissage",
)
db.session.add(log)
db.session.commit()
flash("L'étudiant a été ajouté sur la fiche entreprise.") flash("L'étudiant a été ajouté sur la fiche entreprise.")
return redirect( return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise.id) url_for("entreprises.fiche_entreprise", entreprise_id=entreprise.id)
@ -1369,6 +1481,14 @@ def edit_stage_apprentissage(entreprise_id, stage_apprentissage_id):
formation.formsemestre.formsemestre_id if formation else None, formation.formsemestre.formsemestre_id if formation else None,
) )
stage_apprentissage.notes = form.notes.data.strip() stage_apprentissage.notes = form.notes.data.strip()
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=stage_apprentissage.entreprise_id,
object="stage apprentissage",
object_id=stage_apprentissage.id,
text="Modification d'un stage/apprentissage",
)
db.session.add(log)
db.session.commit() db.session.commit()
return redirect( return redirect(
url_for( url_for(
@ -1404,6 +1524,14 @@ def delete_stage_apprentissage(entreprise_id, stage_apprentissage_id):
form = SuppressionConfirmationForm() form = SuppressionConfirmationForm()
if form.validate_on_submit(): if form.validate_on_submit():
db.session.delete(stage_apprentissage) db.session.delete(stage_apprentissage)
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=stage_apprentissage.entreprise_id,
object="stage apprentissage",
object_id=stage_apprentissage.id,
text="Suppression d'un stage/apprentissage",
)
db.session.add(log)
db.session.commit() db.session.commit()
return redirect( return redirect(
url_for( url_for(

View File

@ -53,6 +53,7 @@
</a> </a>
<ul class="dropdown-menu pull-left"> <ul class="dropdown-menu pull-left">
<li><a href="{{ url_for('entreprises.edit_contact', entreprise_id=entreprise.id, contact_id=contact.id) }}">Modifier</a></li> <li><a href="{{ url_for('entreprises.edit_contact', entreprise_id=entreprise.id, contact_id=contact.id) }}">Modifier</a></li>
<li><a href="{{ url_for('entreprises.delete_contact', entreprise_id=entreprise.id, contact_id=contact.id) }}" style="color:red">Supprimer</a></li>
</ul> </ul>
</div> </div>
</td> </td>

View File

@ -41,6 +41,7 @@
{{ form.hidden_tag() }} {{ form.hidden_tag() }}
<input id="active" name="active" type="checkbox" onChange="form.submit()" {% if checked[0] %} checked {% endif %}> {{ form.active.label }} <input id="active" name="active" type="checkbox" onChange="form.submit()" {% if checked[0] %} checked {% endif %}> {{ form.active.label }}
<input id="association" name="association" type="checkbox" onChange="form.submit()" {% if checked[1] %} checked {% endif %}> {{ form.association.label }} <input id="association" name="association" type="checkbox" onChange="form.submit()" {% if checked[1] %} checked {% endif %}> {{ form.association.label }}
<input id="siret_provisoire" name="siret_provisoire" type="checkbox" onChange="form.submit()" {% if checked[2] %} checked {% endif %}> {{ form.siret_provisoire.label }}
</form> </form>
{% endif %} {% endif %}
<table id="table-entreprises"> <table id="table-entreprises">

View File

@ -97,10 +97,10 @@
<div class="sites-et-offres"> <div class="sites-et-offres">
{% if sites %} {% if entreprise.sites %}
<div> <div>
<h3>Sites</h3> <h3>Sites</h3>
{% for site in sites %} {% for site in entreprise.sites %}
<div class="site"> <div class="site">
Nom : {{ site.nom }}<br> Nom : {{ site.nom }}<br>
Adresse : {{ site.adresse }}<br> Adresse : {{ site.adresse }}<br>

View File

@ -20,10 +20,10 @@
</div> </div>
<div class="sites-et-offres"> <div class="sites-et-offres">
{% if sites %} {% if entreprise.sites %}
<div> <div>
<h3>Sites</h3> <h3>Sites</h3>
{% for site in sites %} {% for site in entreprise.sites %}
<div class="site"> <div class="site">
Nom : {{ site.nom }}<br> Nom : {{ site.nom }}<br>
Adresse : {{ site.adresse }}<br> Adresse : {{ site.adresse }}<br>