From 77eefbe483a39778c4604e307a50d70bcc1f104a Mon Sep 17 00:00:00 2001 From: Arthur ZHU Date: Tue, 12 Apr 2022 00:21:25 +0200 Subject: [PATCH] offre expiration automatique, enlever espaces siret, changement formulaires ... --- app/entreprises/app_relations_entreprises.py | 14 +---- app/entreprises/forms.py | 27 ++------ app/entreprises/routes.py | 63 +++++++------------ .../entreprises/ajout_entreprise.html | 61 ++++++++---------- .../entreprises/fiche_entreprise.html | 16 ++--- .../fiche_entreprise_validation.html | 26 -------- app/templates/entreprises/form.html | 16 +++++ 7 files changed, 82 insertions(+), 141 deletions(-) diff --git a/app/entreprises/app_relations_entreprises.py b/app/entreprises/app_relations_entreprises.py index d11b6aca9..e9b038e05 100644 --- a/app/entreprises/app_relations_entreprises.py +++ b/app/entreprises/app_relations_entreprises.py @@ -107,9 +107,7 @@ def get_offre_files_and_depts(offre: EntrepriseOffre, depts: list): return None -def send_email_notifications_entreprise( - subject, entreprise: Entreprise, correspondant: EntrepriseCorrespondant -): +def send_email_notifications_entreprise(subject, entreprise: Entreprise): txt = [ "Une entreprise est en attente de validation", "Entreprise:", @@ -119,14 +117,6 @@ def send_email_notifications_entreprise( f"\tcode postal: {entreprise.codepostal}", f"\tville: {entreprise.ville}", f"\tpays: {entreprise.pays}", - "", - "Correspondant:", - f"nom: {correspondant.nom}", - f"prenom: {correspondant.prenom}", - f"telephone: {correspondant.telephone}", - f"mail: {correspondant.mail}", - f"poste: {correspondant.poste}", - f"service: {correspondant.service}", ] txt = "\n".join(txt) email.send_email( @@ -192,7 +182,7 @@ def verif_entreprise_data(entreprise_data): if data == "": return False if EntreprisePreferences.get_check_siret(): - siret = entreprise_data[0].strip() # vérification sur le siret + siret = entreprise_data[0].replace(" ", "") # vérification sur le siret if re.match("^\d{14}$", siret) is None: return False try: diff --git a/app/entreprises/forms.py b/app/entreprises/forms.py index 55d96a09b..796ae027f 100644 --- a/app/entreprises/forms.py +++ b/app/entreprises/forms.py @@ -72,7 +72,7 @@ def _build_string_field(label, required=True, render_kw=None): class EntrepriseCreationForm(FlaskForm): siret = _build_string_field( "SIRET (*)", - render_kw={"placeholder": "Numéro composé de 14 chiffres", "maxlength": "14"}, + render_kw={"placeholder": "Numéro composé de 14 chiffres"}, ) nom_entreprise = _build_string_field("Nom de l'entreprise (*)") adresse = _build_string_field("Adresse de l'entreprise (*)") @@ -80,15 +80,6 @@ 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 (*)") - prenom_correspondant = _build_string_field("Prénom du correspondant (*)") - 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): @@ -96,29 +87,23 @@ class EntrepriseCreationForm(FlaskForm): if not FlaskForm.validate(self): validate = False - if not self.telephone.data and not self.mail.data: - 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 = siret.data.strip() - if re.match("^\d{14}$", siret) is None: + siret_data = siret.data.replace(" ", "") + self.siret.data = siret_data + if re.match("^\d{14}$", siret_data) is None: raise ValidationError("Format incorrect") try: req = requests.get( - f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret}" + f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret_data}" ) if req.status_code != 200: raise ValidationError("SIRET inexistant") except requests.ConnectionError: print("no internet") - entreprise = Entreprise.query.filter_by(siret=siret).first() + entreprise = Entreprise.query.filter_by(siret=siret_data).first() if entreprise is not None: lien = f'ici' raise ValidationError( diff --git a/app/entreprises/routes.py b/app/entreprises/routes.py index 771eb93f3..6cdeb437e 100644 --- a/app/entreprises/routes.py +++ b/app/entreprises/routes.py @@ -295,23 +295,12 @@ def add_entreprise(): ) db.session.add(entreprise) db.session.commit() - 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}" log = EntrepriseLog( authenticated_user=current_user.user_name, - text=f"{nom_entreprise} - Création de la fiche entreprise ({entreprise.nom}) avec un correspondant", + text=f"{nom_entreprise} - Création de la fiche entreprise ({entreprise.nom})", ) db.session.add(log) db.session.commit() @@ -322,7 +311,7 @@ def add_entreprise(): db.session.commit() if EntreprisePreferences.get_email_notifications(): are.send_email_notifications_entreprise( - "entreprise en attente de validation", entreprise, correspondant + "entreprise en attente de validation", entreprise ) flash("L'entreprise a été ajouté à la liste pour la validation.") return redirect(url_for("entreprises.index")) @@ -759,29 +748,18 @@ def delete_correspondant(id): ) form = SuppressionConfirmationForm() if form.validate_on_submit(): - correspondant_count = EntrepriseCorrespondant.query.filter_by( - entreprise_id=correspondant.entreprise_id - ).count() - if correspondant_count == 1: - flash( - "Le correspondant n'a pas été supprimé de la fiche entreprise. (1 correspondant minimum)" - ) - return redirect( - url_for("entreprises.fiche_entreprise", id=correspondant.entreprise_id) - ) - else: - db.session.delete(correspondant) - log = EntrepriseLog( - authenticated_user=current_user.user_name, - object=correspondant.entreprise_id, - text="Suppression d'un correspondant", - ) - db.session.add(log) - db.session.commit() - flash("Le correspondant a été supprimé de la fiche entreprise.") - return redirect( - url_for("entreprises.fiche_entreprise", id=correspondant.entreprise_id) - ) + db.session.delete(correspondant) + log = EntrepriseLog( + authenticated_user=current_user.user_name, + object=correspondant.entreprise_id, + text="Suppression d'un correspondant", + ) + db.session.add(log) + db.session.commit() + flash("Le correspondant a été supprimé de la fiche entreprise.") + return redirect( + url_for("entreprises.fiche_entreprise", id=correspondant.entreprise_id) + ) return render_template( "entreprises/delete_confirmation.html", title="Supression correspondant", @@ -842,7 +820,11 @@ def edit_contact(id): @bp.route("/fiche_entreprise/contacts/") +@permission_required(Permission.RelationsEntreprisesView) def contacts(id): + """ + Permet d'afficher une page avec la liste des contacts d'une entreprise + """ contacts = EntrepriseContact.query.filter_by(entreprise=id).all() return render_template( "entreprises/contacts.html", @@ -955,6 +937,7 @@ def edit_stage_apprentissage(id): @bp.route("/delete_stage_apprentissage/", methods=["GET", "POST"]) +@permission_required(Permission.RelationsEntreprisesChange) def delete_stage_apprentissage(id): """ Permet de supprimer un étudiant ayant réalisé un stage ou une alternance sur la fiche entreprise de l'entreprise @@ -1083,7 +1066,8 @@ def export_entreprises(): filename = title return scu.send_file(xlsx, filename, scu.XLSX_SUFFIX, scu.XLSX_MIMETYPE) else: - abort(404) + flash("Aucune entreprise dans la base.") + return redirect(url_for("entreprises.index")) @bp.route("/get_import_entreprises_file_sample") @@ -1141,7 +1125,7 @@ def import_entreprises(): ): siret_list.append(entreprise_data[0]) entreprise = Entreprise( - siret=entreprise_data[0], + siret=entreprise_data[0].replace(" ", ""), nom=entreprise_data[1], adresse=entreprise_data[2], ville=entreprise_data[3], @@ -1217,7 +1201,8 @@ def export_correspondants(): filename = title return scu.send_file(xlsx, filename, scu.XLSX_SUFFIX, scu.XLSX_MIMETYPE) else: - abort(404) + flash("Aucun correspondant dans la base.") + return redirect(url_for("entreprises.correspondants")) @bp.route("/get_import_correspondants_file_sample") diff --git a/app/templates/entreprises/ajout_entreprise.html b/app/templates/entreprises/ajout_entreprise.html index f940097a8..4cf14848c 100644 --- a/app/templates/entreprises/ajout_entreprise.html +++ b/app/templates/entreprises/ajout_entreprise.html @@ -3,7 +3,7 @@ {% import 'bootstrap/wtf.html' as wtf %} {% block app_content %} -

Ajout entreprise avec correspondant

+

Ajout entreprise


@@ -16,45 +16,36 @@
{% endblock %} \ No newline at end of file diff --git a/app/templates/entreprises/fiche_entreprise.html b/app/templates/entreprises/fiche_entreprise.html index 7bb61137c..b8d4b123d 100644 --- a/app/templates/entreprises/fiche_entreprise.html +++ b/app/templates/entreprises/fiche_entreprise.html @@ -95,7 +95,7 @@ {{ data[0].date_debut.strftime('%d/%m/%Y') }} {{ data[0].date_fin.strftime('%d/%m/%Y') }} - {{(data[0].date_fin-data[0].date_debut).days//7}} semaines + {{ (data[0].date_fin-data[0].date_debut).days//7 }} semaines {{ data[0].type_offre }} {{ data[1].nom|format_nom }} {{ data[1].prenom|format_prenom }} {% if data[0].formation_text %}{{ data[0].formation_text }}{% endif %} @@ -118,13 +118,13 @@ - Date début - Date fin - Durée - Type - Étudiant - Formation - Notes + Date début + Date fin + Durée + Type + Étudiant + Formation + Notes {% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %} Action {% endif %} diff --git a/app/templates/entreprises/fiche_entreprise_validation.html b/app/templates/entreprises/fiche_entreprise_validation.html index 2f243b24d..c2d7be3d5 100644 --- a/app/templates/entreprises/fiche_entreprise_validation.html +++ b/app/templates/entreprises/fiche_entreprise_validation.html @@ -16,32 +16,6 @@
- {% if correspondants %} -
- {% for correspondant in correspondants %} -
-

Correspondant

-
- Nom : {{ correspondant.nom }}
- Prénom : {{ correspondant.prenom }}
- {% if correspondant.telephone %} - Téléphone : {{ correspondant.telephone }}
- {% endif %} - {% if correspondant.mail %} - Mail : {{ correspondant.mail }}
- {% endif %} - {% if correspondant.poste %} - Poste : {{ correspondant.poste }}
- {% endif %} - {% if correspondant.service %} - Service : {{ correspondant.service }}
- {% endif %} -
-
- {% endfor %} -
- {% endif %} -
Valider Supprimer diff --git a/app/templates/entreprises/form.html b/app/templates/entreprises/form.html index 071f84fda..5aa9fc6d7 100644 --- a/app/templates/entreprises/form.html +++ b/app/templates/entreprises/form.html @@ -25,5 +25,21 @@ var closest_form_control = champ_depts.closest(".form-control") closest_form_control.classList.remove("form-control") } + + document.getElementById("type_offre").addEventListener("change", expiration); + + function expiration() { + var date = new Date() + var expiration = document.getElementById("expiration_date") + var type_offre = document.getElementById("type_offre").value + if (type_offre == "Alternance") { + expiration.value = `${date.getFullYear() + 1}-01-01` + } else { + if(date.getMonth() + 1 < 7) + expiration.value = `${date.getFullYear()}-07-01` + else + expiration.value = `${date.getFullYear() + 1}-07-01` + } + } {% endblock %} \ No newline at end of file