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)
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self):
validate = True
@ -200,6 +201,7 @@ class EntrepriseModificationForm(FlaskForm):
ville = _build_string_field("Ville (*)")
pays = _build_string_field("Pays", required=False)
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@ -245,6 +247,7 @@ class SiteCreationForm(FlaskForm):
ville = _build_string_field("Ville (*)")
pays = _build_string_field("Pays", required=False)
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self):
validate = True
@ -271,6 +274,7 @@ class SiteModificationForm(FlaskForm):
ville = _build_string_field("Ville (*)")
pays = _build_string_field("Pays", required=False)
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self):
validate = True
@ -321,6 +325,7 @@ class OffreCreationForm(FlaskForm):
],
)
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@ -368,6 +373,7 @@ class OffreModificationForm(FlaskForm):
expiration_date = DateField("Date expiration", validators=[Optional()])
correspondant = SelectField("Correspondant à contacté", validators=[Optional()])
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@ -450,7 +456,8 @@ class CorrespondantCreationForm(FlaskForm):
class CorrespondantsCreationForm(FlaskForm):
hidden_site_id = HiddenField()
correspondants = FieldList(FormField(CorrespondantCreationForm), min_entries=1)
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
submit = SubmitField("Envoyer")
cancel = SubmitField("Annuler")
def validate(self):
validate = True
@ -506,6 +513,7 @@ class CorrespondantModificationForm(FlaskForm):
origine = _build_string_field("Origine", required=False)
notes = _build_string_field("Notes", required=False)
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self):
validate = True
@ -543,6 +551,7 @@ class ContactCreationForm(FlaskForm):
)
notes = TextAreaField("Notes (*)", validators=[DataRequired(message=CHAMP_REQUIS)])
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate_utilisateur(self, utilisateur):
utilisateur_data = self.utilisateur.data.upper().strip()
@ -569,6 +578,7 @@ class ContactModificationForm(FlaskForm):
)
notes = TextAreaField("Notes (*)", validators=[DataRequired(message=CHAMP_REQUIS)])
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate_utilisateur(self, utilisateur):
utilisateur_data = self.utilisateur.data.upper().strip()
@ -602,6 +612,7 @@ class StageApprentissageCreationForm(FlaskForm):
)
notes = TextAreaField("Notes")
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self):
validate = True
@ -649,6 +660,7 @@ class StageApprentissageModificationForm(FlaskForm):
)
notes = TextAreaField("Notes")
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self):
validate = True
@ -705,6 +717,7 @@ class TaxeApprentissageForm(FlaskForm):
)
notes = TextAreaField("Notes")
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def validate(self):
validate = True
@ -738,6 +751,7 @@ class TaxeApprentissageModificationForm(FlaskForm):
)
notes = TextAreaField("Notes")
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@ -755,7 +769,8 @@ class EnvoiOffreForm(FlaskForm):
),
min_entries=1,
)
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
submit = SubmitField("Envoyer")
cancel = SubmitField("Annuler")
def validate(self):
validate = True
@ -795,23 +810,28 @@ class AjoutFichierForm(FlaskForm):
],
)
submit = SubmitField("Ajouter", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
class SuppressionConfirmationForm(FlaskForm):
submit = SubmitField("Supprimer", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
class DesactivationConfirmationForm(FlaskForm):
notes_active = TextAreaField("Notes sur la désactivation", validators=[Optional()])
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
class ActivationConfirmationForm(FlaskForm):
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
class ValidationConfirmationForm(FlaskForm):
submit = SubmitField("Valider", render_kw=SUBMIT_MARGE)
cancel = SubmitField("Annuler", render_kw=SUBMIT_MARGE)
class ImportForm(FlaskForm):
@ -833,3 +853,4 @@ class PreferencesForm(FlaskForm):
)
check_siret = BooleanField("Vérification SIRET")
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"])
@permission_required(Permission.RelationsEntreprisesCorrespondants)
def correspondants():
@ -155,68 +141,17 @@ def correspondants():
)
@bp.route("/fiche_entreprise/<int:entreprise_id>", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView)
def fiche_entreprise(entreprise_id):
@bp.route("/validation", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesValidate)
def validation():
"""
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.
Permet d'afficher une page avec la liste des entreprises a valider (non visible)
"""
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()
)
entreprises = Entreprise.query.filter_by(visible=False).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,
"entreprises/entreprises_validation.html",
title="Validation entreprises",
entreprises=entreprises,
)
@ -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"])
@permission_required(Permission.RelationsEntreprisesView)
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)
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(
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)
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("/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(
"entreprises/offres_expirees.html",
title="Offres expirées",
entreprise=entreprise,
offres_expirees=offres_with_files,
"entreprises/preferences.html",
title="Préférences",
form=form,
)
@ -302,6 +334,8 @@ def add_entreprise():
Permet d'ajouter une entreprise dans la base avec un formulaire
"""
form = EntrepriseCreationForm()
if request.method == "POST" and form.cancel.data:
return redirect(url_for("entreprises.index"))
if form.validate_on_submit():
entreprise = Entreprise(
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(
"/fiche_entreprise/<int:entreprise_id>/edit_entreprise", methods=["GET", "POST"]
)
@ -392,6 +509,10 @@ def edit_entreprise(entreprise_id):
id=entreprise_id, visible=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue")
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():
lien_entreprise = f"<a href='{url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id)}'>{form.nom.data.strip()}</a>"
logs_text = []
@ -469,6 +590,10 @@ def fiche_entreprise_desactiver(entreprise_id):
id=entreprise_id, visible=True, active=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue")
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():
entreprise.notes_active = form.notes_active.data.strip()
entreprise.active = False
@ -502,6 +627,10 @@ def fiche_entreprise_activer(entreprise_id):
id=entreprise_id, visible=True, active=False
).first_or_404(description=f"entreprise {entreprise_id} inconnue")
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():
entreprise.active = True
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
).first_or_404(description=f"entreprise {entreprise_id} inconnue")
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():
taxe = EntrepriseTaxeApprentissage(
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}"
)
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():
taxe.montant = form.montant.data
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}"
)
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():
db.session.delete(taxe)
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"])
@permission_required(Permission.RelationsEntreprisesChange)
def add_offre(entreprise_id):
@ -715,6 +792,10 @@ def add_offre(entreprise_id):
id=entreprise_id, visible=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue")
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():
offre = EntrepriseOffre(
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}"
)
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(
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():
offre.intitule = form.intitule.data.strip()
offre.description = form.description.data.strip()
@ -858,6 +943,10 @@ def delete_offre(entreprise_id, offre_id):
)
entreprise_id = offre.entreprise.id
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():
db.session.delete(offre)
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(
"/fiche_entreprise/<int:entreprise_id>/expired/<int:offre_id>",
methods=["GET", "POST"],
@ -943,6 +1016,10 @@ def add_site(entreprise_id):
id=entreprise_id, visible=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue")
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():
site = EntrepriseSite(
entreprise_id=entreprise.id,
@ -992,6 +1069,10 @@ def edit_site(entreprise_id, site_id):
form = SiteModificationForm(
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():
site.nom = form.nom.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}"
)
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():
for correspondant_entry in form.correspondants.entries:
correspondant = EntrepriseCorrespondant(
@ -1105,6 +1190,10 @@ def edit_correspondant(entreprise_id, site_id, correspondant_id):
hidden_site_id=correspondant.site.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():
correspondant.civilite = form.civilite.data
correspondant.nom = form.nom.data.strip()
@ -1175,6 +1264,10 @@ def delete_correspondant(entreprise_id, site_id, correspondant_id):
)
)
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():
db.session.delete(correspondant)
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(
"/fiche_entreprise/<int:entreprise_id>/contacts/add_contact",
methods=["GET", "POST"],
@ -1219,6 +1330,8 @@ def add_contact(entreprise_id):
if current_user.nom and current_user.prenom
else "",
)
if request.method == "POST" and form.cancel.data:
return redirect(url_for("entreprises.contacts", entreprise_id=entreprise_id))
if form.validate_on_submit():
utilisateur_data = form.utilisateur.data.upper().strip()
stm = text(
@ -1270,6 +1383,8 @@ def edit_contact(entreprise_id, contact_id):
description=f"contact {contact_id} inconnu pour l'entreprise {entreprise_id}"
)
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():
utilisateur_data = form.utilisateur.data.upper().strip()
stm = text(
@ -1324,6 +1439,8 @@ def delete_contact(entreprise_id, contact_id):
description=f"contact {contact_id} inconnu pour l'entreprise {entreprise_id}"
)
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():
db.session.delete(contact)
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(
"/fiche_entreprise/<int:entreprise_id>/add_stage_apprentissage",
methods=["GET", "POST"],
@ -1377,6 +1476,10 @@ def add_stage_apprentissage(entreprise_id):
id=entreprise_id, visible=True
).first_or_404(description=f"entreprise {entreprise_id} inconnue")
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():
etudiant_nomcomplet = form.etudiant.data.upper().strip()
stm = text(
@ -1443,6 +1546,10 @@ def edit_stage_apprentissage(entreprise_id, stage_apprentissage_id):
description=f"etudiant {stage_apprentissage.etudid} inconnue"
)
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():
etudiant_nomcomplet = form.etudiant.data.upper().strip()
stm = text(
@ -1508,6 +1615,10 @@ def delete_stage_apprentissage(entreprise_id, stage_apprentissage_id):
id=stage_apprentissage_id, entreprise_id=entreprise_id
).first_or_404(description=f"stage_apprentissage {stage_apprentissage_id} inconnu")
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():
db.session.delete(stage_apprentissage)
log = EntrepriseHistorique(
@ -1548,6 +1659,10 @@ def envoyer_offre(entreprise_id, offre_id):
description=f"offre {offre_id} inconnue pour l'entreprise {entreprise_id}"
)
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():
for responsable in form.responsables.entries:
if responsable.data.strip():
@ -1652,7 +1767,7 @@ def export_donnees():
@bp.route("/import_donnees/get_file_sample")
@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
"""
@ -1787,6 +1902,10 @@ def add_offre_file(entreprise_id, offre_id):
description=f"offre {offre_id} inconnue pour l'entreprise {entreprise_id}"
)
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():
date = f"{datetime.now().strftime('%Y-%m-%d-%H-%M-%S')}"
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}"
)
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():
path = os.path.join(
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)
def not_found_error_handler(e):
"""

View File

@ -2,6 +2,17 @@
{% extends 'base.html' %}
{% 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">
<h2>Fiche entreprise - {{ entreprise.nom }} ({{ entreprise.siret }})</h2>

View File

@ -32,7 +32,8 @@
{{ form.correspondants }}
<div style="margin-bottom: 10px;">
<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>
</form>
</div>

View File

@ -25,7 +25,8 @@
{{ form.responsables }}
<div style="margin-bottom: 10px;">
<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>
</form>
</div>

View File

@ -22,7 +22,7 @@
<h1>{{ title }}</h1>
<br>
<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>
<br>
<div class="row">