diff --git a/app/entreprises/forms.py b/app/entreprises/forms.py index c0560e45..227e9f8b 100644 --- a/app/entreprises/forms.py +++ b/app/entreprises/forms.py @@ -86,6 +86,7 @@ def _build_string_field(label, required=True, render_kw=None): class EntreprisesFilterForm(FlaskForm): active = BooleanField("Toutes les entreprises") association = BooleanField("Seulement les associations partenaires") + siret_provisoire = BooleanField("Seulement SIRET provisoire") class EntrepriseCreationForm(FlaskForm): diff --git a/app/entreprises/routes.py b/app/entreprises/routes.py index 7e16ee5b..7060e85b 100644 --- a/app/entreprises/routes.py +++ b/app/entreprises/routes.py @@ -74,29 +74,27 @@ def index(): .limit(LOGS_LEN) .all() ) - if current_user.has_permission(Permission.RelationsEntreprisesChange, None): - form = EntreprisesFilterForm() - checked = [False, False] - if request.method == "POST": - checked[0] = form.active.data - checked[1] = form.association.data - if checked[0]: - entreprises = Entreprise.query.filter_by(visible=True) - if checked[1]: - entreprises = Entreprise.query.filter_by(association=True) - return render_template( - "entreprises/entreprises.html", - title="Entreprises", - entreprises=entreprises, - logs=logs, - form=form, - checked=checked, + form = EntreprisesFilterForm() + checked = [False, False, False] + if request.method == "POST": + checked = [form.active.data, form.association.data, form.siret_provisoire.data] + if checked[0]: + entreprises = Entreprise.query.filter_by(visible=True) + if checked[1]: + 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( "entreprises/entreprises.html", title="Entreprises", entreprises=entreprises, logs=logs, + form=form, + checked=checked, ) @@ -182,7 +180,6 @@ def fiche_entreprise(entreprise_id): offre_with_files = are.get_offre_files_and_depts(offre, depts) if offre_with_files is not None: offres_with_files.append(offre_with_files) - sites = entreprise.sites[:] logs = ( EntrepriseHistorique.query.order_by(EntrepriseHistorique.date.desc()) .filter(EntrepriseHistorique.entreprise_id == entreprise.id) @@ -205,7 +202,6 @@ def fiche_entreprise(entreprise_id): "entreprises/fiche_entreprise.html", title="Fiche entreprise", entreprise=entreprise, - sites=sites, offres=offres_with_files, logs=logs, stages_apprentissages=stages_apprentissages, @@ -247,12 +243,10 @@ def fiche_entreprise_validation(entreprise_id): ).first_or_404( description=f"fiche entreprise (validation) {entreprise_id} inconnue" ) - sites = entreprise.sites[:] return render_template( "entreprises/fiche_entreprise_validation.html", title="Validation fiche entreprise", entreprise=entreprise, - sites=sites, ) @@ -424,6 +418,7 @@ def edit_entreprise(entreprise_id): if form.new_siret.data: logs_text.append(f"{lien_entreprise} - Modification du SIRET") entreprise.siret = form.new_siret.data.strip() + entreprise.siret_provisoire = False if entreprise.nom != form.nom.data.strip(): logs_text.append( f"{lien_entreprise} - Modification du nom (ancien nom: {entreprise.nom})" @@ -458,13 +453,12 @@ def edit_entreprise(entreprise_id): entreprise.association = form.association.data for log_text in logs_text: - db.session.add( - EntrepriseHistorique( - authenticated_user=current_user.user_name, - entreprise_id=entreprise.id, - text=log_text, - ) + log = EntrepriseHistorique( + authenticated_user=current_user.user_name, + entreprise_id=entreprise.id, + text=log_text, ) + db.session.add(log) db.session.commit() flash("L'entreprise a été modifié.") return redirect( @@ -498,6 +492,13 @@ def fiche_entreprise_desactiver(entreprise_id): if form.validate_on_submit(): entreprise.notes_active = form.notes_active.data.strip() entreprise.active = False + lien_entreprise = f"{entreprise.nom}" + 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() flash("L'entreprise a été désactivé.") return redirect( @@ -523,6 +524,13 @@ def fiche_entreprise_activer(entreprise_id): form = ActivationConfirmationForm() if form.validate_on_submit(): entreprise.active = True + lien_entreprise = f"{entreprise.nom}" + 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() flash("L'entreprise a été activé.") return redirect( @@ -557,6 +565,16 @@ def add_taxe_apprentissage(entreprise_id): ) db.session.add(taxe) 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( 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(): taxe.montant = form.montant.data 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() return redirect( url_for("entreprises.fiche_entreprise", entreprise_id=taxe.entreprise_id) @@ -614,6 +640,14 @@ def delete_taxe_apprentissage(entreprise_id, taxe_id): form = SuppressionConfirmationForm() if form.validate_on_submit(): 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() flash("La taxe d'apprentissage a été supprimé de la liste.") return redirect( @@ -675,6 +709,12 @@ def delete_validation_entreprise(entreprise_id): if form.validate_on_submit(): db.session.delete(entreprise) 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.") return redirect(url_for("entreprises.validation")) return render_template( @@ -921,7 +961,6 @@ def add_site(entreprise_id): ).first_or_404(description=f"entreprise {entreprise_id} inconnue") form = SiteCreationForm(hidden_entreprise_id=entreprise.id) if form.validate_on_submit(): - lien_entreprise = f"{entreprise.nom} - {form.nom.data.strip()}" site = EntrepriseSite( entreprise_id=entreprise.id, nom=form.nom.data.strip(), @@ -933,6 +972,7 @@ def add_site(entreprise_id): db.session.add(site) db.session.commit() db.session.refresh(site) + lien_entreprise = f"{entreprise.nom} - {form.nom.data.strip()}" log = EntrepriseHistorique( authenticated_user=current_user.user_name, entreprise_id=entreprise.id, @@ -972,6 +1012,14 @@ def edit_site(entreprise_id, site_id): site.codepostal = form.codepostal.data.strip() site.ville = form.ville.data.strip() 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() return redirect( url_for("entreprises.fiche_entreprise", entreprise_id=site.entreprise_id) @@ -1003,7 +1051,6 @@ def add_correspondant(entreprise_id, site_id): ).first_or_404( description=f"site {site_id} inconnue pour l'entreprise {entreprise_id}" ) - print(site.entreprise_id) form = CorrespondantsCreationForm(hidden_site_id=site.id) if form.validate_on_submit(): for correspondant_entry in form.correspondants.entries: @@ -1204,6 +1251,16 @@ def add_contact(entreprise_id): ) db.session.add(contact) 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 render_template( "entreprises/form.html", @@ -1240,6 +1297,14 @@ def edit_contact(entreprise_id, contact_id): contact.date = form.date.data contact.user = utilisateur.id 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() return redirect( url_for("entreprises.contacts", entreprise_id=contact.entreprise) @@ -1258,6 +1323,43 @@ def edit_contact(entreprise_id, contact_id): ) +@bp.route( + "/fiche_entreprise//contacts/delete_contact/", + 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//contacts") @permission_required(Permission.RelationsEntreprisesView) def contacts(entreprise_id): @@ -1316,6 +1418,16 @@ def add_stage_apprentissage(entreprise_id): ) db.session.add(stage_apprentissage) 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.") return redirect( 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, ) 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() return redirect( url_for( @@ -1404,6 +1524,14 @@ def delete_stage_apprentissage(entreprise_id, stage_apprentissage_id): form = SuppressionConfirmationForm() if form.validate_on_submit(): 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() return redirect( url_for( diff --git a/app/templates/entreprises/contacts.html b/app/templates/entreprises/contacts.html index e79f214b..8158e7e7 100644 --- a/app/templates/entreprises/contacts.html +++ b/app/templates/entreprises/contacts.html @@ -53,6 +53,7 @@ diff --git a/app/templates/entreprises/entreprises.html b/app/templates/entreprises/entreprises.html index d9970abd..dda33de4 100644 --- a/app/templates/entreprises/entreprises.html +++ b/app/templates/entreprises/entreprises.html @@ -41,6 +41,7 @@ {{ form.hidden_tag() }} {{ form.active.label }} {{ form.association.label }} + {{ form.siret_provisoire.label }} {% endif %} diff --git a/app/templates/entreprises/fiche_entreprise.html b/app/templates/entreprises/fiche_entreprise.html index 776186ac..6535ff73 100644 --- a/app/templates/entreprises/fiche_entreprise.html +++ b/app/templates/entreprises/fiche_entreprise.html @@ -97,10 +97,10 @@
- {% if sites %} + {% if entreprise.sites %}

Sites

- {% for site in sites %} + {% for site in entreprise.sites %}
Nom : {{ site.nom }}
Adresse : {{ site.adresse }}
diff --git a/app/templates/entreprises/fiche_entreprise_validation.html b/app/templates/entreprises/fiche_entreprise_validation.html index 7e4030ff..9ee189c1 100644 --- a/app/templates/entreprises/fiche_entreprise_validation.html +++ b/app/templates/entreprises/fiche_entreprise_validation.html @@ -20,10 +20,10 @@
- {% if sites %} + {% if entreprise.sites %}

Sites

- {% for site in sites %} + {% for site in entreprise.sites %}
Nom : {{ site.nom }}
Adresse : {{ site.adresse }}