From edd9fde616daba498d2b758f2dd987c0eb708292 Mon Sep 17 00:00:00 2001 From: Arthur ZHU Date: Wed, 13 Apr 2022 20:59:26 +0200 Subject: [PATCH] =?UTF-8?q?correction=20bug,=20refactoring=20routes,=20ajo?= =?UTF-8?q?ut=20champ=20valeur=20par=20d=C3=A9faut,=20saisie=20entreprise?= =?UTF-8?q?=20(contact=20optionnel)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/entreprises/app_relations_entreprises.py | 20 ++-- app/entreprises/forms.py | 46 ++++++- app/entreprises/models.py | 6 + app/entreprises/routes.py | 113 +++++++++++------- .../entreprises/ajout_entreprise.html | 27 +++-- .../fiche_entreprise_validation.html | 26 ++++ app/templates/entreprises/form.html | 25 +++- 7 files changed, 191 insertions(+), 72 deletions(-) diff --git a/app/entreprises/app_relations_entreprises.py b/app/entreprises/app_relations_entreprises.py index e9b038e0..e3c0d1da 100644 --- a/app/entreprises/app_relations_entreprises.py +++ b/app/entreprises/app_relations_entreprises.py @@ -141,28 +141,28 @@ def verif_correspondant_data(correspondant_data): """ # champs obligatoires if ( - correspondant_data[0] == "" - or correspondant_data[1] == "" - or correspondant_data[6] == "" + correspondant_data[0].strip() == "" + or correspondant_data[1].strip() == "" + or correspondant_data[6].strip() == "" ): return False # entreprise_id existant - entreprise = Entreprise.query.filter_by(siret=correspondant_data[6]).first() + entreprise = Entreprise.query.filter_by(siret=correspondant_data[6].strip()).first() if entreprise is None: return False # correspondant possède le meme nom et prénom dans la meme entreprise correspondant = EntrepriseCorrespondant.query.filter_by( - nom=correspondant_data[0], - prenom=correspondant_data[1], + nom=correspondant_data[0].strip(), + prenom=correspondant_data[1].strip(), entreprise_id=entreprise.id, ).first() if correspondant is not None: return False if ( - correspondant_data[2] == "" and correspondant_data[3] == "" + correspondant_data[2].strip() == "" and correspondant_data[3].strip() == "" ): # 1 moyen de contact return False @@ -175,11 +175,11 @@ def verif_entreprise_data(entreprise_data): """ if EntreprisePreferences.get_check_siret(): for data in entreprise_data: # champs obligatoires - if data == "": + if data.strip() == "": return False else: for data in entreprise_data[1:]: # champs obligatoires - if data == "": + if data.strip() == "": return False if EntreprisePreferences.get_check_siret(): siret = entreprise_data[0].replace(" ", "") # vérification sur le siret @@ -192,7 +192,7 @@ def verif_entreprise_data(entreprise_data): if req.status_code != 200: return False except requests.ConnectionError: - print("no internet") + return False entreprise = Entreprise.query.filter_by(siret=siret).first() if entreprise is not None: return False diff --git a/app/entreprises/forms.py b/app/entreprises/forms.py index 603f6d84..cff363b9 100644 --- a/app/entreprises/forms.py +++ b/app/entreprises/forms.py @@ -80,8 +80,50 @@ class EntrepriseCreationForm(FlaskForm): ville = _build_string_field("Ville de l'entreprise (*)") pays = _build_string_field("Pays de l'entreprise", required=False) + nom_correspondant = _build_string_field("Nom du correspondant", required=False) + prenom_correspondant = _build_string_field( + "Prénom du correspondant", required=False + ) + telephone = _build_string_field("Téléphone du correspondant", required=False) + mail = StringField( + "Mail du correspondant", + validators=[Optional(), Email(message="Adresse e-mail invalide")], + ) + poste = _build_string_field("Poste du correspondant", required=False) + service = _build_string_field("Service du correspondant", required=False) + submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE) + def validate(self): + validate = True + if not FlaskForm.validate(self): + validate = False + + if ( + self.nom_correspondant.data.strip() + or self.prenom_correspondant.data.strip() + or self.telephone.data.strip() + or self.mail.data.strip() + or self.poste.data.strip() + or self.service.data.strip() + ): + if not self.nom_correspondant.data.strip(): + self.nom_correspondant.errors.append("Ce champ est requis") + validate = False + if not self.prenom_correspondant.data.strip(): + self.prenom_correspondant.errors.append("Ce champ est requis") + validate = False + if not self.telephone.data.strip() and not self.mail.data.strip(): + self.telephone.errors.append( + "Saisir un moyen de contact (mail ou téléphone)" + ) + self.mail.errors.append( + "Saisir un moyen de contact (mail ou téléphone)" + ) + validate = False + + return validate + def validate_siret(self, siret): if EntreprisePreferences.get_check_siret(): siret_data = siret.data.replace(" ", "") @@ -95,7 +137,7 @@ class EntrepriseCreationForm(FlaskForm): if req.status_code != 200: raise ValidationError("SIRET inexistant") except requests.ConnectionError: - print("no internet") + raise ValidationError("Impossible de vérifier l'existance du SIRET") entreprise = Entreprise.query.filter_by(siret=siret_data).first() if entreprise is not None: lien = f'ici' @@ -197,7 +239,7 @@ class OffreModificationForm(FlaskForm): duree = _build_string_field("Durée (*)") depts = MultiCheckboxField("Départements", validators=[Optional()], coerce=int) 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) def __init__(self, *args, **kwargs): diff --git a/app/entreprises/models.py b/app/entreprises/models.py index 2cb8e3d8..74a4ccc4 100644 --- a/app/entreprises/models.py +++ b/app/entreprises/models.py @@ -35,6 +35,12 @@ class Entreprise(db.Model): } +# class EntrepriseSite(db.Model): +# __tablename__ = "are_sites" +# id = db.Column(db.Integer, primary_key=True) +# nom = db.Column(db.Text) + + class EntrepriseCorrespondant(db.Model): __tablename__ = "are_correspondants" id = db.Column(db.Integer, primary_key=True) diff --git a/app/entreprises/routes.py b/app/entreprises/routes.py index 91a595fd..09ae715a 100644 --- a/app/entreprises/routes.py +++ b/app/entreprises/routes.py @@ -170,7 +170,7 @@ def fiche_entreprise(id): ) -@bp.route("/logs/", methods=["GET"]) +@bp.route("/fiche_entreprise//logs", methods=["GET"]) @permission_required(Permission.RelationsEntreprisesView) def logs_entreprise(id): """ @@ -294,6 +294,18 @@ def add_entreprise(): ) db.session.add(entreprise) db.session.commit() + if form.nom_correspondant.data.strip(): + db.session.refresh(entreprise) + correspondant = EntrepriseCorrespondant( + entreprise_id=entreprise.id, + nom=form.nom_correspondant.data.strip(), + prenom=form.prenom_correspondant.data.strip(), + telephone=form.telephone.data.strip(), + mail=form.mail.data.strip(), + poste=form.poste.data.strip(), + service=form.service.data.strip(), + ) + db.session.add(correspondant) if current_user.has_permission(Permission.RelationsEntreprisesValidate, None): entreprise.visible = True nom_entreprise = f"{entreprise.nom}" @@ -321,7 +333,7 @@ def add_entreprise(): ) -@bp.route("/edit_entreprise/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise/edit_entreprise/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def edit_entreprise(id): """ @@ -392,7 +404,7 @@ def edit_entreprise(id): ) -@bp.route("/delete_entreprise/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise/delete_entreprise/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def delete_entreprise(id): """ @@ -428,7 +440,9 @@ def delete_entreprise(id): ) -@bp.route("/validate_entreprise/", methods=["GET", "POST"]) +@bp.route( + "/fiche_entreprise_validation//validate_entreprise", methods=["GET", "POST"] +) @permission_required(Permission.RelationsEntreprisesValidate) def validate_entreprise(id): """ @@ -456,7 +470,10 @@ def validate_entreprise(id): ) -@bp.route("/delete_validation_entreprise/", methods=["GET", "POST"]) +@bp.route( + "/fiche_entreprise_validation//delete_validation_entreprise", + methods=["GET", "POST"], +) @permission_required(Permission.RelationsEntreprisesValidate) def delete_validation_entreprise(id): """ @@ -478,7 +495,7 @@ def delete_validation_entreprise(id): ) -@bp.route("/add_offre/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise//add_offre", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def add_offre(id): """ @@ -537,7 +554,7 @@ def add_offre(id): ) -@bp.route("/edit_offre/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise/edit_offre/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def edit_offre(id): """ @@ -597,7 +614,7 @@ def edit_offre(id): ) -@bp.route("/delete_offre/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise/delete_offre/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def delete_offre(id): """ @@ -634,7 +651,7 @@ def delete_offre(id): ) -@bp.route("/delete_offre_recue/", methods=["GET", "POST"]) +@bp.route("/offres_recues/delete_offre_recue/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesView) def delete_offre_recue(id): """ @@ -648,7 +665,7 @@ def delete_offre_recue(id): return redirect(url_for("entreprises.offres_recues")) -@bp.route("/expired/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise/expired/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def expired(id): """ @@ -666,7 +683,7 @@ def expired(id): return redirect(url_for("entreprises.fiche_entreprise", id=offre.entreprise_id)) -@bp.route("/add_correspondant/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise//add_correspondant", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def add_correspondant(id): """ @@ -704,7 +721,7 @@ def add_correspondant(id): ) -@bp.route("/edit_correspondant/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise/edit_correspondant/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def edit_correspondant(id): """ @@ -749,7 +766,7 @@ def edit_correspondant(id): ) -@bp.route("/delete_correspondant/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise/delete_correspondant/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def delete_correspondant(id): """ @@ -779,7 +796,7 @@ def delete_correspondant(id): ) -@bp.route("fiche_entreprise/add_contact/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise//add_contact", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def add_contact(id): """ @@ -806,7 +823,7 @@ def add_contact(id): ) -@bp.route("fiche_entreprise/edit_contact/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise/edit_contact/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def edit_contact(id): """ @@ -831,7 +848,7 @@ def edit_contact(id): ) -@bp.route("/fiche_entreprise/contacts/") +@bp.route("/fiche_entreprise//contacts") @permission_required(Permission.RelationsEntreprisesView) def contacts(id): """ @@ -846,7 +863,7 @@ def contacts(id): ) -@bp.route("/add_stage_apprentissage/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise//add_stage_apprentissage", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def add_stage_apprentissage(id): """ @@ -892,7 +909,9 @@ def add_stage_apprentissage(id): ) -@bp.route("/edit_stage_apprentissage/", methods=["GET", "POST"]) +@bp.route( + "/fiche_entreprise/edit_stage_apprentissage/", methods=["GET", "POST"] +) @permission_required(Permission.RelationsEntreprisesChange) def edit_stage_apprentissage(id): """ @@ -948,7 +967,9 @@ def edit_stage_apprentissage(id): ) -@bp.route("/delete_stage_apprentissage/", methods=["GET", "POST"]) +@bp.route( + "/fiche_entreprise/delete_stage_apprentissage/", methods=["GET", "POST"] +) @permission_required(Permission.RelationsEntreprisesChange) def delete_stage_apprentissage(id): """ @@ -973,7 +994,7 @@ def delete_stage_apprentissage(id): ) -@bp.route("/envoyer_offre/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise/envoyer_offre/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesSend) def envoyer_offre(id): """ @@ -1082,7 +1103,7 @@ def export_entreprises(): return redirect(url_for("entreprises.index")) -@bp.route("/get_import_entreprises_file_sample") +@bp.route("/import_entreprises/get_import_entreprises_file_sample") @permission_required(Permission.RelationsEntreprisesExport) def get_import_entreprises_file_sample(): """ @@ -1133,20 +1154,19 @@ def import_entreprises(): ligne += 1 if ( are.verif_entreprise_data(entreprise_data) - and entreprise_data[0] not in siret_list + and entreprise_data[0].replace(" ", "") not in siret_list ): - siret_list.append(entreprise_data[0]) + siret_list.append(entreprise_data[0].replace(" ", "")) entreprise = Entreprise( siret=entreprise_data[0].replace(" ", ""), - nom=entreprise_data[1], - adresse=entreprise_data[2], - ville=entreprise_data[3], - codepostal=entreprise_data[4], - pays=entreprise_data[5], + nom=entreprise_data[1].strip(), + adresse=entreprise_data[2].strip(), + ville=entreprise_data[3].strip(), + codepostal=entreprise_data[4].strip(), + pays=entreprise_data[5].strip(), visible=True, ) entreprises_import.append(entreprise) - else: flash(f"Erreur lors de l'importation (ligne {ligne})") return render_template( @@ -1217,7 +1237,7 @@ def export_correspondants(): return redirect(url_for("entreprises.correspondants")) -@bp.route("/get_import_correspondants_file_sample") +@bp.route("/import_correspondants/get_import_correspondants_file_sample") @permission_required(Permission.RelationsEntreprisesExport) def get_import_correspondants_file_sample(): """ @@ -1278,29 +1298,29 @@ def import_correspondants(): if ( are.verif_correspondant_data(correspondant_data) and ( - correspondant_data[0], - correspondant_data[1], - correspondant_data[6], + correspondant_data[0].strip(), + correspondant_data[1].strip(), + correspondant_data[6].strip(), ) not in correspondant_list ): correspondant_list.append( ( - correspondant_data[0], - correspondant_data[1], - correspondant_data[6], + correspondant_data[0].strip(), + correspondant_data[1].strip(), + correspondant_data[6].strip(), ) ) entreprise = Entreprise.query.filter_by( - siret=correspondant_data[6] + siret=correspondant_data[6].strip() ).first() correspondant = EntrepriseCorrespondant( - nom=correspondant_data[0], - prenom=correspondant_data[1], - telephone=correspondant_data[2], - mail=correspondant_data[3], - poste=correspondant_data[4], - service=correspondant_data[5], + nom=correspondant_data[0].strip(), + prenom=correspondant_data[1].strip(), + telephone=correspondant_data[2].strip(), + mail=correspondant_data[3].strip(), + poste=correspondant_data[4].strip(), + service=correspondant_data[5].strip(), entreprise_id=entreprise.id, ) correspondants_import.append(correspondant) @@ -1372,7 +1392,7 @@ def get_offre_file(entreprise_id, offre_id, filedir, filename): abort(404, description=f"fichier {filename} inconnu") -@bp.route("/add_offre_file/", methods=["GET", "POST"]) +@bp.route("/fiche_entreprise/add_offre_file/", methods=["GET", "POST"]) @permission_required(Permission.RelationsEntreprisesChange) def add_offre_file(offre_id): """ @@ -1404,7 +1424,10 @@ def add_offre_file(offre_id): ) -@bp.route("/delete_offre_file//", methods=["GET", "POST"]) +@bp.route( + "/fiche_entreprise/delete_offre_file//", + methods=["GET", "POST"], +) @permission_required(Permission.RelationsEntreprisesChange) def delete_offre_file(offre_id, filedir): """ diff --git a/app/templates/entreprises/ajout_entreprise.html b/app/templates/entreprises/ajout_entreprise.html index 4cf14848..83dff9fd 100644 --- a/app/templates/entreprises/ajout_entreprise.html +++ b/app/templates/entreprises/ajout_entreprise.html @@ -16,21 +16,28 @@