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()