1
0
forked from ScoDoc/ScoDoc

ajout boutons annuler

This commit is contained in:
Arthur ZHU 2022-08-23 18:54:44 +02:00
parent 809b5a992d
commit a200add8df
6 changed files with 346 additions and 210 deletions

View File

@ -123,6 +123,7 @@ class EntrepriseCreationForm(FlaskForm):
notes = _build_string_field("Notes sur le correspondant", required=False) notes = _build_string_field("Notes sur le correspondant", required=False)
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE) submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self): def validate(self):
validate = True validate = True
@ -200,6 +201,7 @@ class EntrepriseModificationForm(FlaskForm):
ville = _build_string_field("Ville (*)") ville = _build_string_field("Ville (*)")
pays = _build_string_field("Pays", required=False) pays = _build_string_field("Pays", required=False)
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE) submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -245,6 +247,7 @@ class SiteCreationForm(FlaskForm):
ville = _build_string_field("Ville (*)") ville = _build_string_field("Ville (*)")
pays = _build_string_field("Pays", required=False) pays = _build_string_field("Pays", required=False)
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE) submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self): def validate(self):
validate = True validate = True
@ -271,6 +274,7 @@ class SiteModificationForm(FlaskForm):
ville = _build_string_field("Ville (*)") ville = _build_string_field("Ville (*)")
pays = _build_string_field("Pays", required=False) pays = _build_string_field("Pays", required=False)
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE) submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self): def validate(self):
validate = True validate = True
@ -321,6 +325,7 @@ class OffreCreationForm(FlaskForm):
], ],
) )
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE) submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -368,6 +373,7 @@ class OffreModificationForm(FlaskForm):
expiration_date = DateField("Date expiration", validators=[Optional()]) expiration_date = DateField("Date expiration", validators=[Optional()])
correspondant = SelectField("Correspondant à contacté", validators=[Optional()]) correspondant = SelectField("Correspondant à contacté", validators=[Optional()])
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE) submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -450,7 +456,8 @@ class CorrespondantCreationForm(FlaskForm):
class CorrespondantsCreationForm(FlaskForm): class CorrespondantsCreationForm(FlaskForm):
hidden_site_id = HiddenField() hidden_site_id = HiddenField()
correspondants = FieldList(FormField(CorrespondantCreationForm), min_entries=1) correspondants = FieldList(FormField(CorrespondantCreationForm), min_entries=1)
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE) submit = SubmitField("Envoyer")
cancel = SubmitField("Annuler")
def validate(self): def validate(self):
validate = True validate = True
@ -506,6 +513,7 @@ class CorrespondantModificationForm(FlaskForm):
origine = _build_string_field("Origine", required=False) origine = _build_string_field("Origine", required=False)
notes = _build_string_field("Notes", required=False) notes = _build_string_field("Notes", required=False)
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE) submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self): def validate(self):
validate = True validate = True
@ -543,6 +551,7 @@ class ContactCreationForm(FlaskForm):
) )
notes = TextAreaField("Notes (*)", validators=[DataRequired(message=CHAMP_REQUIS)]) notes = TextAreaField("Notes (*)", validators=[DataRequired(message=CHAMP_REQUIS)])
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE) submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate_utilisateur(self, utilisateur): def validate_utilisateur(self, utilisateur):
utilisateur_data = self.utilisateur.data.upper().strip() utilisateur_data = self.utilisateur.data.upper().strip()
@ -569,6 +578,7 @@ class ContactModificationForm(FlaskForm):
) )
notes = TextAreaField("Notes (*)", validators=[DataRequired(message=CHAMP_REQUIS)]) notes = TextAreaField("Notes (*)", validators=[DataRequired(message=CHAMP_REQUIS)])
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE) submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate_utilisateur(self, utilisateur): def validate_utilisateur(self, utilisateur):
utilisateur_data = self.utilisateur.data.upper().strip() utilisateur_data = self.utilisateur.data.upper().strip()
@ -602,6 +612,7 @@ class StageApprentissageCreationForm(FlaskForm):
) )
notes = TextAreaField("Notes") notes = TextAreaField("Notes")
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE) submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self): def validate(self):
validate = True validate = True
@ -649,6 +660,7 @@ class StageApprentissageModificationForm(FlaskForm):
) )
notes = TextAreaField("Notes") notes = TextAreaField("Notes")
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE) submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self): def validate(self):
validate = True validate = True
@ -705,6 +717,7 @@ class TaxeApprentissageForm(FlaskForm):
) )
notes = TextAreaField("Notes") notes = TextAreaField("Notes")
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE) submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self): def validate(self):
validate = True validate = True
@ -738,6 +751,7 @@ class TaxeApprentissageModificationForm(FlaskForm):
) )
notes = TextAreaField("Notes") notes = TextAreaField("Notes")
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE) submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -755,7 +769,8 @@ class EnvoiOffreForm(FlaskForm):
), ),
min_entries=1, min_entries=1,
) )
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE) submit = SubmitField("Envoyer")
cancel = SubmitField("Annuler")
def validate(self): def validate(self):
validate = True validate = True
@ -795,23 +810,28 @@ class AjoutFichierForm(FlaskForm):
], ],
) )
submit = SubmitField("Ajouter", render_kw=SUBMIT_MARGE) submit = SubmitField("Ajouter", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
class SuppressionConfirmationForm(FlaskForm): class SuppressionConfirmationForm(FlaskForm):
submit = SubmitField("Supprimer", render_kw=SUBMIT_MARGE) submit = SubmitField("Supprimer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
class DesactivationConfirmationForm(FlaskForm): class DesactivationConfirmationForm(FlaskForm):
notes_active = TextAreaField("Notes sur la désactivation", validators=[Optional()]) notes_active = TextAreaField("Notes sur la désactivation", validators=[Optional()])
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE) submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
class ActivationConfirmationForm(FlaskForm): class ActivationConfirmationForm(FlaskForm):
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE) submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
class ValidationConfirmationForm(FlaskForm): class ValidationConfirmationForm(FlaskForm):
submit = SubmitField("Valider", render_kw=SUBMIT_MARGE) submit = SubmitField("Valider", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
class ImportForm(FlaskForm): class ImportForm(FlaskForm):
@ -833,3 +853,4 @@ class PreferencesForm(FlaskForm):
) )
check_siret = BooleanField("Vérification SIRET") check_siret = BooleanField("Vérification SIRET")
submit = SubmitField("Valider", render_kw=SUBMIT_MARGE) submit = SubmitField("Valider", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)

View File

@ -115,20 +115,6 @@ def logs():
) )
@bp.route("/validation", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesValidate)
def validation():
"""
Permet d'afficher une page avec la liste des entreprises a valider (non visible)
"""
entreprises = Entreprise.query.filter_by(visible=False).all()
return render_template(
"entreprises/entreprises_validation.html",
title="Validation entreprises",
entreprises=entreprises,
)
@bp.route("/correspondants", methods=["GET"]) @bp.route("/correspondants", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesCorrespondants) @permission_required(Permission.RelationsEntreprisesCorrespondants)
def correspondants(): def correspondants():
@ -155,68 +141,17 @@ def correspondants():
) )
@bp.route("/fiche_entreprise/<int:entreprise_id>", methods=["GET"]) @bp.route("/validation", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView) @permission_required(Permission.RelationsEntreprisesValidate)
def fiche_entreprise(entreprise_id): def validation():
""" """
Permet d'afficher la fiche entreprise d'une entreprise avec une liste des dernières opérations et Permet d'afficher une page avec la liste des entreprises a valider (non visible)
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 correspondants de l'entreprise et
les offres de l'entreprise.
""" """
entreprise = Entreprise.query.filter_by( entreprises = Entreprise.query.filter_by(visible=False).all()
id=entreprise_id, visible=True
).first_or_404(description=f"fiche entreprise {entreprise_id} inconnue")
offres_with_files = are.get_offres_non_expirees_with_files(entreprise.offres)
logs = (
EntrepriseHistorique.query.order_by(EntrepriseHistorique.date.desc())
.filter(EntrepriseHistorique.entreprise_id == entreprise.id)
.limit(LOGS_LEN)
.all()
)
stages_apprentissages = (
db.session.query(EntrepriseStageApprentissage, Identite)
.order_by(EntrepriseStageApprentissage.date_debut.desc())
.filter(EntrepriseStageApprentissage.entreprise_id == entreprise.id)
.join(Identite, Identite.id == EntrepriseStageApprentissage.etudid)
.all()
)
taxes = (
EntrepriseTaxeApprentissage.query.filter_by(entreprise_id=entreprise.id)
.order_by(EntrepriseTaxeApprentissage.annee.desc())
.all()
)
return render_template( return render_template(
"entreprises/fiche_entreprise.html", "entreprises/entreprises_validation.html",
title="Fiche entreprise", title="Validation entreprises",
entreprise=entreprise, entreprises=entreprises,
offres=offres_with_files,
logs=logs,
stages_apprentissages=stages_apprentissages,
taxes=taxes,
)
@bp.route("/fiche_entreprise/<int:entreprise_id>/logs", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView)
def logs_entreprise(entreprise_id):
"""
Permet d'afficher les logs d'une entreprise
"""
page = request.args.get("page", 1, type=int)
entreprise = Entreprise.query.filter_by(
id=entreprise_id, visible=True
).first_or_404(description=f"logs fiche entreprise {entreprise_id} inconnu")
logs = (
EntrepriseHistorique.query.order_by(EntrepriseHistorique.date.desc())
.filter(EntrepriseHistorique.entreprise_id == entreprise.id)
.paginate(page=page, per_page=20)
)
return render_template(
"entreprises/logs_entreprise.html",
title="Logs",
logs=logs,
entreprise=entreprise,
) )
@ -238,6 +173,82 @@ def fiche_entreprise_validation(entreprise_id):
) )
@bp.route(
"/fiche_entreprise_validation/<int:entreprise_id>/validate_entreprise",
methods=["GET", "POST"],
)
@permission_required(Permission.RelationsEntreprisesValidate)
def validate_entreprise(entreprise_id):
"""
Permet de valider une entreprise
"""
form = ValidationConfirmationForm()
entreprise = Entreprise.query.filter_by(
id=entreprise_id, visible=False
).first_or_404(description=f"entreprise (validation) {entreprise_id} inconnue")
if request.method == "POST" and form.cancel.data:
return redirect(
url_for(
"entreprises.fiche_entreprise_validation", entreprise_id=entreprise_id
)
)
if form.validate_on_submit():
entreprise.visible = True
nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{entreprise.nom}</a>"
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=entreprise.id,
text=f"{nom_entreprise} - Validation de la fiche entreprise ({entreprise.nom})",
)
db.session.add(log)
db.session.commit()
flash("L'entreprise a été validé et ajouté à la liste.")
return redirect(url_for("entreprises.validation"))
return render_template(
"entreprises/form_validate_confirmation.html",
title="Validation entreprise",
form=form,
)
@bp.route(
"/fiche_entreprise_validation/<int:entreprise_id>/delete_validation_entreprise",
methods=["GET", "POST"],
)
@permission_required(Permission.RelationsEntreprisesValidate)
def delete_validation_entreprise(entreprise_id):
"""
Permet de supprimer une entreprise en attente de validation avec une formulaire de validation
"""
entreprise = Entreprise.query.filter_by(
id=entreprise_id, visible=False
).first_or_404(description=f"entreprise (validation) {entreprise_id} inconnue")
form = SuppressionConfirmationForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for(
"entreprises.fiche_entreprise_validation", entreprise_id=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(
"entreprises/form_confirmation.html",
title="Supression entreprise",
form=form,
info_message="Cliquez sur le bouton Supprimer pour confirmer votre supression",
)
@bp.route("/offres_recues", methods=["GET"]) @bp.route("/offres_recues", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView) @permission_required(Permission.RelationsEntreprisesView)
def offres_recues(): def offres_recues():
@ -277,21 +288,42 @@ def offres_recues():
) )
@bp.route("/fiche_entreprise/<int:entreprise_id>/offres_expirees") @bp.route(
"/offres_recues/delete_offre_recue/<int:envoi_offre_id>", methods=["GET", "POST"]
)
@permission_required(Permission.RelationsEntreprisesView) @permission_required(Permission.RelationsEntreprisesView)
def offres_expirees(entreprise_id): def delete_offre_recue(envoi_offre_id):
""" """
Permet d'afficher la liste des offres expirés d'une entreprise Permet de supprimer une offre reçue
""" """
entreprise = Entreprise.query.filter_by( offre_recue = EntrepriseEnvoiOffre.query.filter_by(
id=entreprise_id, visible=True id=envoi_offre_id, receiver_id=current_user.id
).first_or_404(description=f"fiche entreprise {entreprise_id} inconnue") ).first_or_404(description=f"offre recu {envoi_offre_id} inconnue")
offres_with_files = are.get_offres_expirees_with_files(entreprise.offres) db.session.delete(offre_recue)
db.session.commit()
return redirect(url_for("entreprises.offres_recues"))
@bp.route("/preferences", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesValidate)
def preferences():
"""
Permet d'afficher la page des préférences du module gestion des relations entreprises
"""
form = PreferencesForm()
if request.method == "POST" and form.cancel.data:
return redirect(url_for("entreprises.index"))
if form.validate_on_submit():
EntreprisePreferences.set_email_notifications(form.mail_entreprise.data.strip())
EntreprisePreferences.set_check_siret(int(form.check_siret.data))
return redirect(url_for("entreprises.index"))
elif request.method == "GET":
form.mail_entreprise.data = EntreprisePreferences.get_email_notifications()
form.check_siret.data = int(EntreprisePreferences.get_check_siret())
return render_template( return render_template(
"entreprises/offres_expirees.html", "entreprises/preferences.html",
title="Offres expirées", title="Préférences",
entreprise=entreprise, form=form,
offres_expirees=offres_with_files,
) )
@ -302,6 +334,8 @@ def add_entreprise():
Permet d'ajouter une entreprise dans la base avec un formulaire Permet d'ajouter une entreprise dans la base avec un formulaire
""" """
form = EntrepriseCreationForm() form = EntrepriseCreationForm()
if request.method == "POST" and form.cancel.data:
return redirect(url_for("entreprises.index"))
if form.validate_on_submit(): if form.validate_on_submit():
entreprise = Entreprise( entreprise = Entreprise(
nom=form.nom_entreprise.data.strip(), nom=form.nom_entreprise.data.strip(),
@ -380,6 +414,89 @@ def add_entreprise():
) )
@bp.route("/fiche_entreprise/<int:entreprise_id>", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView)
def fiche_entreprise(entreprise_id):
"""
Permet d'afficher la fiche entreprise d'une entreprise avec une liste des dernières opérations et
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 correspondants de l'entreprise et
les offres de l'entreprise.
"""
entreprise = Entreprise.query.filter_by(
id=entreprise_id, visible=True
).first_or_404(description=f"fiche entreprise {entreprise_id} inconnue")
offres_with_files = are.get_offres_non_expirees_with_files(entreprise.offres)
logs = (
EntrepriseHistorique.query.order_by(EntrepriseHistorique.date.desc())
.filter(EntrepriseHistorique.entreprise_id == entreprise.id)
.limit(LOGS_LEN)
.all()
)
stages_apprentissages = (
db.session.query(EntrepriseStageApprentissage, Identite)
.order_by(EntrepriseStageApprentissage.date_debut.desc())
.filter(EntrepriseStageApprentissage.entreprise_id == entreprise.id)
.join(Identite, Identite.id == EntrepriseStageApprentissage.etudid)
.all()
)
taxes = (
EntrepriseTaxeApprentissage.query.filter_by(entreprise_id=entreprise.id)
.order_by(EntrepriseTaxeApprentissage.annee.desc())
.all()
)
return render_template(
"entreprises/fiche_entreprise.html",
title="Fiche entreprise",
entreprise=entreprise,
offres=offres_with_files,
logs=logs,
stages_apprentissages=stages_apprentissages,
taxes=taxes,
)
@bp.route("/fiche_entreprise/<int:entreprise_id>/logs", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView)
def logs_entreprise(entreprise_id):
"""
Permet d'afficher les logs d'une entreprise
"""
page = request.args.get("page", 1, type=int)
entreprise = Entreprise.query.filter_by(
id=entreprise_id, visible=True
).first_or_404(description=f"logs fiche entreprise {entreprise_id} inconnu")
logs = (
EntrepriseHistorique.query.order_by(EntrepriseHistorique.date.desc())
.filter(EntrepriseHistorique.entreprise_id == entreprise.id)
.paginate(page=page, per_page=20)
)
return render_template(
"entreprises/logs_entreprise.html",
title="Logs",
logs=logs,
entreprise=entreprise,
)
@bp.route("/fiche_entreprise/<int:entreprise_id>/offres_expirees")
@permission_required(Permission.RelationsEntreprisesView)
def offres_expirees(entreprise_id):
"""
Permet d'afficher la liste des offres expirés d'une entreprise
"""
entreprise = Entreprise.query.filter_by(
id=entreprise_id, visible=True
).first_or_404(description=f"fiche entreprise {entreprise_id} inconnue")
offres_with_files = are.get_offres_expirees_with_files(entreprise.offres)
return render_template(
"entreprises/offres_expirees.html",
title="Offres expirées",
entreprise=entreprise,
offres_expirees=offres_with_files,
)
@bp.route( @bp.route(
"/fiche_entreprise/<int:entreprise_id>/edit_entreprise", methods=["GET", "POST"] "/fiche_entreprise/<int:entreprise_id>/edit_entreprise", methods=["GET", "POST"]
) )
@ -392,6 +509,10 @@ def edit_entreprise(entreprise_id):
id=entreprise_id, visible=True id=entreprise_id, visible=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue") ).first_or_404(description=f"entreprise {entreprise_id} inconnue")
form = EntrepriseModificationForm(siret=entreprise.siret) form = EntrepriseModificationForm(siret=entreprise.siret)
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
lien_entreprise = f"<a href='{url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id)}'>{form.nom.data.strip()}</a>" lien_entreprise = f"<a href='{url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id)}'>{form.nom.data.strip()}</a>"
logs_text = [] logs_text = []
@ -469,6 +590,10 @@ def fiche_entreprise_desactiver(entreprise_id):
id=entreprise_id, visible=True, active=True id=entreprise_id, visible=True, active=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue") ).first_or_404(description=f"entreprise {entreprise_id} inconnue")
form = DesactivationConfirmationForm() form = DesactivationConfirmationForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=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
@ -502,6 +627,10 @@ def fiche_entreprise_activer(entreprise_id):
id=entreprise_id, visible=True, active=False id=entreprise_id, visible=True, active=False
).first_or_404(description=f"entreprise {entreprise_id} inconnue") ).first_or_404(description=f"entreprise {entreprise_id} inconnue")
form = ActivationConfirmationForm() form = ActivationConfirmationForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
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>" lien_entreprise = f"<a href='{url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id)}'>{entreprise.nom}</a>"
@ -536,6 +665,10 @@ def add_taxe_apprentissage(entreprise_id):
id=entreprise_id, visible=True id=entreprise_id, visible=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue") ).first_or_404(description=f"entreprise {entreprise_id} inconnue")
form = TaxeApprentissageForm(hidden_entreprise_id=entreprise.id) form = TaxeApprentissageForm(hidden_entreprise_id=entreprise.id)
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
taxe = EntrepriseTaxeApprentissage( taxe = EntrepriseTaxeApprentissage(
entreprise_id=entreprise.id, entreprise_id=entreprise.id,
@ -579,6 +712,10 @@ def edit_taxe_apprentissage(entreprise_id, taxe_id):
description=f"taxe d'apprentissage {taxe_id} inconnue pour l'entreprise {entreprise_id}" description=f"taxe d'apprentissage {taxe_id} inconnue pour l'entreprise {entreprise_id}"
) )
form = TaxeApprentissageModificationForm(annee=taxe.annee) form = TaxeApprentissageModificationForm(annee=taxe.annee)
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_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()
@ -618,6 +755,10 @@ def delete_taxe_apprentissage(entreprise_id, taxe_id):
description=f"taxe d'apprentissage {taxe_id} inconnue pour l'entreprise {entreprise_id}" description=f"taxe d'apprentissage {taxe_id} inconnue pour l'entreprise {entreprise_id}"
) )
form = SuppressionConfirmationForm() form = SuppressionConfirmationForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
db.session.delete(taxe) db.session.delete(taxe)
log = EntrepriseHistorique( log = EntrepriseHistorique(
@ -641,70 +782,6 @@ def delete_taxe_apprentissage(entreprise_id, taxe_id):
) )
@bp.route(
"/fiche_entreprise_validation/<int:entreprise_id>/validate_entreprise",
methods=["GET", "POST"],
)
@permission_required(Permission.RelationsEntreprisesValidate)
def validate_entreprise(entreprise_id):
"""
Permet de valider une entreprise
"""
form = ValidationConfirmationForm()
entreprise = Entreprise.query.filter_by(
id=entreprise_id, visible=False
).first_or_404(description=f"entreprise (validation) {entreprise_id} inconnue")
if form.validate_on_submit():
entreprise.visible = True
nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{entreprise.nom}</a>"
log = EntrepriseHistorique(
authenticated_user=current_user.user_name,
entreprise_id=entreprise.id,
text=f"{nom_entreprise} - Validation de la fiche entreprise ({entreprise.nom})",
)
db.session.add(log)
db.session.commit()
flash("L'entreprise a été validé et ajouté à la liste.")
return redirect(url_for("entreprises.validation"))
return render_template(
"entreprises/form_validate_confirmation.html",
title="Validation entreprise",
form=form,
)
@bp.route(
"/fiche_entreprise_validation/<int:entreprise_id>/delete_validation_entreprise",
methods=["GET", "POST"],
)
@permission_required(Permission.RelationsEntreprisesValidate)
def delete_validation_entreprise(entreprise_id):
"""
Permet de supprimer une entreprise en attente de validation avec une formulaire de validation
"""
entreprise = Entreprise.query.filter_by(
id=entreprise_id, visible=False
).first_or_404(description=f"entreprise (validation) {entreprise_id} inconnue")
form = SuppressionConfirmationForm()
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(
"entreprises/form_confirmation.html",
title="Supression entreprise",
form=form,
info_message="Cliquez sur le bouton Supprimer pour confirmer votre supression",
)
@bp.route("/fiche_entreprise/<int:entreprise_id>/add_offre", methods=["GET", "POST"]) @bp.route("/fiche_entreprise/<int:entreprise_id>/add_offre", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange) @permission_required(Permission.RelationsEntreprisesChange)
def add_offre(entreprise_id): def add_offre(entreprise_id):
@ -715,6 +792,10 @@ def add_offre(entreprise_id):
id=entreprise_id, visible=True id=entreprise_id, visible=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue") ).first_or_404(description=f"entreprise {entreprise_id} inconnue")
form = OffreCreationForm(hidden_entreprise_id=entreprise.id) form = OffreCreationForm(hidden_entreprise_id=entreprise.id)
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
offre = EntrepriseOffre( offre = EntrepriseOffre(
entreprise_id=entreprise.id, entreprise_id=entreprise.id,
@ -785,10 +866,14 @@ def edit_offre(entreprise_id, offre_id):
description=f"offre {offre_id} inconnue pour l'entreprise {entreprise_id}" description=f"offre {offre_id} inconnue pour l'entreprise {entreprise_id}"
) )
offre_depts = EntrepriseOffreDepartement.query.filter_by(offre_id=offre.id).all() offre_depts = EntrepriseOffreDepartement.query.filter_by(offre_id=offre.id).all()
offre_depts_list = [(offre_dept.dept_id) for offre_dept in offre_depts]
form = OffreModificationForm( form = OffreModificationForm(
hidden_entreprise_id=offre.entreprise_id, correspondant=offre.correspondant_id hidden_entreprise_id=offre.entreprise_id, correspondant=offre.correspondant_id
) )
offre_depts_list = [(offre_dept.dept_id) for offre_dept in offre_depts] if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
offre.intitule = form.intitule.data.strip() offre.intitule = form.intitule.data.strip()
offre.description = form.description.data.strip() offre.description = form.description.data.strip()
@ -858,6 +943,10 @@ def delete_offre(entreprise_id, offre_id):
) )
entreprise_id = offre.entreprise.id entreprise_id = offre.entreprise.id
form = SuppressionConfirmationForm() form = SuppressionConfirmationForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
db.session.delete(offre) db.session.delete(offre)
path = os.path.join( path = os.path.join(
@ -889,22 +978,6 @@ def delete_offre(entreprise_id, offre_id):
) )
@bp.route(
"/offres_recues/delete_offre_recue/<int:envoi_offre_id>", methods=["GET", "POST"]
)
@permission_required(Permission.RelationsEntreprisesView)
def delete_offre_recue(envoi_offre_id):
"""
Permet de supprimer une offre reçue
"""
offre_recue = EntrepriseEnvoiOffre.query.filter_by(
id=envoi_offre_id, receiver_id=current_user.id
).first_or_404(description=f"offre recu {envoi_offre_id} inconnue")
db.session.delete(offre_recue)
db.session.commit()
return redirect(url_for("entreprises.offres_recues"))
@bp.route( @bp.route(
"/fiche_entreprise/<int:entreprise_id>/expired/<int:offre_id>", "/fiche_entreprise/<int:entreprise_id>/expired/<int:offre_id>",
methods=["GET", "POST"], methods=["GET", "POST"],
@ -943,6 +1016,10 @@ def add_site(entreprise_id):
id=entreprise_id, visible=True id=entreprise_id, visible=True
).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 request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
site = EntrepriseSite( site = EntrepriseSite(
entreprise_id=entreprise.id, entreprise_id=entreprise.id,
@ -992,6 +1069,10 @@ def edit_site(entreprise_id, site_id):
form = SiteModificationForm( form = SiteModificationForm(
hidden_entreprise_id=site.entreprise_id, hidden_site_id=site.id hidden_entreprise_id=site.entreprise_id, hidden_site_id=site.id
) )
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
site.nom = form.nom.data.strip() site.nom = form.nom.data.strip()
site.adresse = form.adresse.data.strip() site.adresse = form.adresse.data.strip()
@ -1038,6 +1119,10 @@ def add_correspondant(entreprise_id, site_id):
description=f"site {site_id} inconnue pour l'entreprise {entreprise_id}" description=f"site {site_id} inconnue pour l'entreprise {entreprise_id}"
) )
form = CorrespondantsCreationForm(hidden_site_id=site.id) form = CorrespondantsCreationForm(hidden_site_id=site.id)
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_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:
correspondant = EntrepriseCorrespondant( correspondant = EntrepriseCorrespondant(
@ -1105,6 +1190,10 @@ def edit_correspondant(entreprise_id, site_id, correspondant_id):
hidden_site_id=correspondant.site.id, hidden_site_id=correspondant.site.id,
hidden_correspondant_id=correspondant.id, hidden_correspondant_id=correspondant.id,
) )
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
correspondant.civilite = form.civilite.data correspondant.civilite = form.civilite.data
correspondant.nom = form.nom.data.strip() correspondant.nom = form.nom.data.strip()
@ -1175,6 +1264,10 @@ def delete_correspondant(entreprise_id, site_id, correspondant_id):
) )
) )
form = SuppressionConfirmationForm() form = SuppressionConfirmationForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
db.session.delete(correspondant) db.session.delete(correspondant)
log = EntrepriseHistorique( log = EntrepriseHistorique(
@ -1201,6 +1294,24 @@ def delete_correspondant(entreprise_id, site_id, correspondant_id):
) )
@bp.route("/fiche_entreprise/<int:entreprise_id>/contacts")
@permission_required(Permission.RelationsEntreprisesView)
def contacts(entreprise_id):
"""
Permet d'afficher une page avec la liste des contacts d'une entreprise
"""
entreprise = Entreprise.query.filter_by(
id=entreprise_id, visible=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue")
contacts = EntrepriseContact.query.filter_by(entreprise=entreprise.id).all()
return render_template(
"entreprises/contacts.html",
title="Liste des contacts",
contacts=contacts,
entreprise=entreprise,
)
@bp.route( @bp.route(
"/fiche_entreprise/<int:entreprise_id>/contacts/add_contact", "/fiche_entreprise/<int:entreprise_id>/contacts/add_contact",
methods=["GET", "POST"], methods=["GET", "POST"],
@ -1219,6 +1330,8 @@ def add_contact(entreprise_id):
if current_user.nom and current_user.prenom if current_user.nom and current_user.prenom
else "", else "",
) )
if request.method == "POST" and form.cancel.data:
return redirect(url_for("entreprises.contacts", entreprise_id=entreprise_id))
if form.validate_on_submit(): if form.validate_on_submit():
utilisateur_data = form.utilisateur.data.upper().strip() utilisateur_data = form.utilisateur.data.upper().strip()
stm = text( stm = text(
@ -1270,6 +1383,8 @@ def edit_contact(entreprise_id, contact_id):
description=f"contact {contact_id} inconnu pour l'entreprise {entreprise_id}" description=f"contact {contact_id} inconnu pour l'entreprise {entreprise_id}"
) )
form = ContactModificationForm() form = ContactModificationForm()
if request.method == "POST" and form.cancel.data:
return redirect(url_for("entreprises.contacts", entreprise_id=entreprise_id))
if form.validate_on_submit(): if form.validate_on_submit():
utilisateur_data = form.utilisateur.data.upper().strip() utilisateur_data = form.utilisateur.data.upper().strip()
stm = text( stm = text(
@ -1324,6 +1439,8 @@ def delete_contact(entreprise_id, contact_id):
description=f"contact {contact_id} inconnu pour l'entreprise {entreprise_id}" description=f"contact {contact_id} inconnu pour l'entreprise {entreprise_id}"
) )
form = SuppressionConfirmationForm() form = SuppressionConfirmationForm()
if request.method == "POST" and form.cancel.data:
return redirect(url_for("entreprises.contacts", entreprise_id=entreprise_id))
if form.validate_on_submit(): if form.validate_on_submit():
db.session.delete(contact) db.session.delete(contact)
log = EntrepriseHistorique( log = EntrepriseHistorique(
@ -1346,24 +1463,6 @@ def delete_contact(entreprise_id, contact_id):
) )
@bp.route("/fiche_entreprise/<int:entreprise_id>/contacts")
@permission_required(Permission.RelationsEntreprisesView)
def contacts(entreprise_id):
"""
Permet d'afficher une page avec la liste des contacts d'une entreprise
"""
entreprise = Entreprise.query.filter_by(
id=entreprise_id, visible=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue")
contacts = EntrepriseContact.query.filter_by(entreprise=entreprise.id).all()
return render_template(
"entreprises/contacts.html",
title="Liste des contacts",
contacts=contacts,
entreprise=entreprise,
)
@bp.route( @bp.route(
"/fiche_entreprise/<int:entreprise_id>/add_stage_apprentissage", "/fiche_entreprise/<int:entreprise_id>/add_stage_apprentissage",
methods=["GET", "POST"], methods=["GET", "POST"],
@ -1377,6 +1476,10 @@ def add_stage_apprentissage(entreprise_id):
id=entreprise_id, visible=True id=entreprise_id, visible=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue") ).first_or_404(description=f"entreprise {entreprise_id} inconnue")
form = StageApprentissageCreationForm() form = StageApprentissageCreationForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
etudiant_nomcomplet = form.etudiant.data.upper().strip() etudiant_nomcomplet = form.etudiant.data.upper().strip()
stm = text( stm = text(
@ -1443,6 +1546,10 @@ def edit_stage_apprentissage(entreprise_id, stage_apprentissage_id):
description=f"etudiant {stage_apprentissage.etudid} inconnue" description=f"etudiant {stage_apprentissage.etudid} inconnue"
) )
form = StageApprentissageModificationForm() form = StageApprentissageModificationForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
etudiant_nomcomplet = form.etudiant.data.upper().strip() etudiant_nomcomplet = form.etudiant.data.upper().strip()
stm = text( stm = text(
@ -1508,6 +1615,10 @@ def delete_stage_apprentissage(entreprise_id, stage_apprentissage_id):
id=stage_apprentissage_id, entreprise_id=entreprise_id id=stage_apprentissage_id, entreprise_id=entreprise_id
).first_or_404(description=f"stage_apprentissage {stage_apprentissage_id} inconnu") ).first_or_404(description=f"stage_apprentissage {stage_apprentissage_id} inconnu")
form = SuppressionConfirmationForm() form = SuppressionConfirmationForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
db.session.delete(stage_apprentissage) db.session.delete(stage_apprentissage)
log = EntrepriseHistorique( log = EntrepriseHistorique(
@ -1548,6 +1659,10 @@ def envoyer_offre(entreprise_id, offre_id):
description=f"offre {offre_id} inconnue pour l'entreprise {entreprise_id}" description=f"offre {offre_id} inconnue pour l'entreprise {entreprise_id}"
) )
form = EnvoiOffreForm() form = EnvoiOffreForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
for responsable in form.responsables.entries: for responsable in form.responsables.entries:
if responsable.data.strip(): if responsable.data.strip():
@ -1652,7 +1767,7 @@ def export_donnees():
@bp.route("/import_donnees/get_file_sample") @bp.route("/import_donnees/get_file_sample")
@permission_required(Permission.RelationsEntreprisesExport) @permission_required(Permission.RelationsEntreprisesExport)
def get_import_donnees_file_sample(): def import_donnees_get_file_sample():
""" """
Permet de récupérer un fichier exemple vide pour pouvoir importer des entreprises Permet de récupérer un fichier exemple vide pour pouvoir importer des entreprises
""" """
@ -1787,6 +1902,10 @@ def add_offre_file(entreprise_id, offre_id):
description=f"offre {offre_id} inconnue pour l'entreprise {entreprise_id}" description=f"offre {offre_id} inconnue pour l'entreprise {entreprise_id}"
) )
form = AjoutFichierForm() form = AjoutFichierForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
date = f"{datetime.now().strftime('%Y-%m-%d-%H-%M-%S')}" date = f"{datetime.now().strftime('%Y-%m-%d-%H-%M-%S')}"
path = os.path.join( path = os.path.join(
@ -1826,6 +1945,10 @@ def delete_offre_file(entreprise_id, offre_id, filedir):
description=f"offre {offre_id} inconnue pour l'entreprise {entreprise_id}" description=f"offre {offre_id} inconnue pour l'entreprise {entreprise_id}"
) )
form = SuppressionConfirmationForm() form = SuppressionConfirmationForm()
if request.method == "POST" and form.cancel.data:
return redirect(
url_for("entreprises.fiche_entreprise", entreprise_id=entreprise_id)
)
if form.validate_on_submit(): if form.validate_on_submit():
path = os.path.join( path = os.path.join(
Config.SCODOC_VAR_DIR, Config.SCODOC_VAR_DIR,
@ -1850,27 +1973,6 @@ def delete_offre_file(entreprise_id, offre_id, filedir):
) )
@bp.route("/preferences", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesValidate)
def preferences():
"""
Permet d'afficher la page des préférences du module gestion des relations entreprises
"""
form = PreferencesForm()
if form.validate_on_submit():
EntreprisePreferences.set_email_notifications(form.mail_entreprise.data.strip())
EntreprisePreferences.set_check_siret(int(form.check_siret.data))
return redirect(url_for("entreprises.index"))
elif request.method == "GET":
form.mail_entreprise.data = EntreprisePreferences.get_email_notifications()
form.check_siret.data = int(EntreprisePreferences.get_check_siret())
return render_template(
"entreprises/preferences.html",
title="Préférences",
form=form,
)
@bp.errorhandler(404) @bp.errorhandler(404)
def not_found_error_handler(e): def not_found_error_handler(e):
""" """

View File

@ -2,6 +2,17 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% block app_content %} {% block app_content %}
<div class="container">
<ul class="breadcrumbs">
<li class="breadcrumbs_item">
<a href="{{ url_for('entreprises.validation') }}" class="breadcrumbs_link">Entreprises</a>
</li>
<li class="breadcrumbs_item">
<a href="" class="breadcrumbs_link breadcrumbs_link-active">Fiche entreprise</a>
</li>
</ul>
</div>
<div class="container"> <div class="container">
<h2>Fiche entreprise - {{ entreprise.nom }} ({{ entreprise.siret }})</h2> <h2>Fiche entreprise - {{ entreprise.nom }} ({{ entreprise.siret }})</h2>

View File

@ -32,7 +32,8 @@
{{ form.correspondants }} {{ form.correspondants }}
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
<button class="btn btn-default" id="add-correspondant-field">Ajouter un correspondant</button> <button class="btn btn-default" id="add-correspondant-field">Ajouter un correspondant</button>
<input class="btn btn-default" type="submit" value="Envoyer"> {{ form.submit(class_="btn btn-default") }}
{{ form.cancel(class_="btn btn-default") }}
</div> </div>
</form> </form>
</div> </div>

View File

@ -25,7 +25,8 @@
{{ form.responsables }} {{ form.responsables }}
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
<button class="btn btn-default" id="add-responsable-field">Ajouter un responsable</button> <button class="btn btn-default" id="add-responsable-field">Ajouter un responsable</button>
<input class="btn btn-default" type="submit" value="Envoyer"> {{ form.submit(class_="btn btn-default") }}
{{ form.cancel(class_="btn btn-default") }}
</div> </div>
</form> </form>
</div> </div>

View File

@ -22,7 +22,7 @@
<h1>{{ title }}</h1> <h1>{{ title }}</h1>
<br> <br>
<div> <div>
<a href="{{ url_for('entreprises.get_import_donnees_file_sample') }}">Obtenir la feuille excel à remplir</a> <a href="{{ url_for('entreprises.import_donnees_get_file_sample') }}">Obtenir la feuille excel à remplir</a>
</div> </div>
<br> <br>
<div class="row"> <div class="row">