From ea73c050e6e3fae86341ffa1d01dd05194a15471 Mon Sep 17 00:00:00 2001 From: Arthur ZHU Date: Wed, 13 Jul 2022 16:53:54 +0200 Subject: [PATCH] siret unique --- app/entreprises/forms.py | 3 +- app/entreprises/models.py | 2 +- app/entreprises/routes.py | 34 ++++++++++++++----- ...uppression_colonne_are_correspondants_.py} | 10 +++--- scodoc.py | 2 +- 5 files changed, 35 insertions(+), 16 deletions(-) rename migrations/versions/{bd358f412282_suppression_colonne_are_correspondants_.py => cb360caa3dac_suppression_colonne_are_correspondants_.py} (89%) diff --git a/app/entreprises/forms.py b/app/entreprises/forms.py index 853a358c9..c0560e45f 100644 --- a/app/entreprises/forms.py +++ b/app/entreprises/forms.py @@ -28,6 +28,7 @@ import re import requests from datetime import datetime +from flask import url_for from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileAllowed, FileRequired from markupsafe import Markup @@ -149,7 +150,7 @@ class EntrepriseCreationForm(FlaskForm): entreprise = Entreprise.query.filter_by(siret=siret_data).first() if entreprise is not None: if entreprise.visible is True: - lien = f'ici' + lien = f"ici" self.siret.errors.append( Markup( f"Entreprise déjà présent, lien vers la fiche : {lien}" diff --git a/app/entreprises/models.py b/app/entreprises/models.py index aabb66c5a..0ad22f25f 100644 --- a/app/entreprises/models.py +++ b/app/entreprises/models.py @@ -4,7 +4,7 @@ from app import db class Entreprise(db.Model): __tablename__ = "are_entreprises" id = db.Column(db.Integer, primary_key=True) - siret = db.Column(db.Text, index=True) + siret = db.Column(db.Text, index=True, unique=True) siret_provisoire = db.Column(db.Boolean, default=False) nom = db.Column(db.Text) adresse = db.Column(db.Text) diff --git a/app/entreprises/routes.py b/app/entreprises/routes.py index 4d35abe34..7e16ee5ba 100644 --- a/app/entreprises/routes.py +++ b/app/entreprises/routes.py @@ -341,9 +341,18 @@ def add_entreprise(): ville=form.ville.data.strip(), pays=form.pays.data.strip() if form.pays.data.strip() else "FRANCE", ) - db.session.add(entreprise) - db.session.commit() - db.session.refresh(entreprise) + try: + db.session.add(entreprise) + db.session.commit() + db.session.refresh(entreprise) + except: + db.session.rollback() + flash("Une erreur est survenue veuillez réessayer.") + return render_template( + "entreprises/form_ajout_entreprise.html", + title="Ajout entreprise avec correspondant", + form=form, + ) site = EntrepriseSite( entreprise_id=entreprise.id, nom=form.nom_entreprise.data.strip(), @@ -371,7 +380,7 @@ def add_entreprise(): db.session.add(correspondant) if current_user.has_permission(Permission.RelationsEntreprisesValidate, None): entreprise.visible = True - lien_entreprise = f"{entreprise.nom}" + lien_entreprise = f"{entreprise.nom}" log = EntrepriseHistorique( authenticated_user=current_user.user_name, text=f"{lien_entreprise} - Création de la fiche entreprise ({entreprise.nom})", @@ -410,7 +419,7 @@ def edit_entreprise(entreprise_id): ).first_or_404(description=f"entreprise {entreprise_id} inconnue") form = EntrepriseModificationForm(siret=entreprise.siret) if form.validate_on_submit(): - lien_entreprise = f"{form.nom.data.strip()}" + lien_entreprise = f"{form.nom.data.strip()}" logs_text = [] if form.new_siret.data: logs_text.append(f"{lien_entreprise} - Modification du SIRET") @@ -1567,9 +1576,18 @@ def import_donnees(): ): return redirect(url_for("entreprises.import_donnees")) for entreprise in entreprises_import: - db.session.add(entreprise) - db.session.commit() - db.session.refresh(entreprise) + try: + db.session.add(entreprise) + db.session.commit() + db.session.refresh(entreprise) + except: + db.session.rollback() + flash("Une erreur est survenue veuillez réessayer.") + return render_template( + "entreprises/import_donnees.html", + title="Importation données", + form=form, + ) site = EntrepriseSite( entreprise_id=entreprise.id, nom=entreprise.nom, diff --git a/migrations/versions/bd358f412282_suppression_colonne_are_correspondants_.py b/migrations/versions/cb360caa3dac_suppression_colonne_are_correspondants_.py similarity index 89% rename from migrations/versions/bd358f412282_suppression_colonne_are_correspondants_.py rename to migrations/versions/cb360caa3dac_suppression_colonne_are_correspondants_.py index ee3d6f826..0155903ab 100644 --- a/migrations/versions/bd358f412282_suppression_colonne_are_correspondants_.py +++ b/migrations/versions/cb360caa3dac_suppression_colonne_are_correspondants_.py @@ -1,8 +1,8 @@ -"""suppression colonne are_correspondants, ajout siret provisoire +"""suppression colonne are_correspondants, ajout siret provisoire, siret cle unique -Revision ID: bd358f412282 +Revision ID: cb360caa3dac Revises: 0b337376e9f7 -Create Date: 2022-07-12 09:24:59.328369 +Create Date: 2022-07-13 15:52:14.113530 """ from alembic import op @@ -10,7 +10,7 @@ import sqlalchemy as sa # revision identifiers, used by Alembic. -revision = 'bd358f412282' +revision = 'cb360caa3dac' down_revision = '0b337376e9f7' branch_labels = None depends_on = None @@ -21,7 +21,7 @@ def upgrade(): op.drop_constraint('are_correspondants_entreprise_id_fkey', 'are_correspondants', type_='foreignkey') op.drop_column('are_correspondants', 'entreprise_id') op.add_column('are_entreprises', sa.Column('siret_provisoire', sa.Boolean(), nullable=True)) - op.create_index(op.f('ix_are_entreprises_siret'), 'are_entreprises', ['siret'], unique=False) + op.create_index(op.f('ix_are_entreprises_siret'), 'are_entreprises', ['siret'], unique=True) # ### end Alembic commands ### diff --git a/scodoc.py b/scodoc.py index cc93eebe9..f488347e8 100755 --- a/scodoc.py +++ b/scodoc.py @@ -523,7 +523,7 @@ def recursive_help(cmd, parent=None): def entreprises_reset_db(): """Remet a zéro les tables du module relations entreprises""" click.confirm( - "This will erase all the tables from the blueprint 'entreprises'.\nAre you sure you want to continue?", + "This will erase all data from the blueprint 'entreprises'.\nAre you sure you want to continue?", abort=True, ) db.reflect()