import feuille entreprises

This commit is contained in:
Arthur ZHU 2022-06-03 18:12:28 +02:00
parent 74cd1400d8
commit 1ba5954762
2 changed files with 87 additions and 49 deletions

View File

@ -30,6 +30,7 @@ import re
import requests import requests
import glob import glob
from flask import redirect, url_for, flash
from flask_login import current_user from flask_login import current_user
from app.entreprises.models import ( from app.entreprises.models import (
@ -39,6 +40,7 @@ from app.entreprises.models import (
EntrepriseOffreDepartement, EntrepriseOffreDepartement,
EntreprisePreferences, EntreprisePreferences,
EntrepriseSite, EntrepriseSite,
EntrepriseLog,
) )
from app import email, db from app import email, db
from app.scodoc import sco_preferences from app.scodoc import sco_preferences
@ -316,20 +318,70 @@ def verif_correspondant_data(correspondant_data):
return True return True
def verif_entreprise_data(entreprise_data): def check_entreprises_import(m):
entreprises_import = []
siret_list = []
ligne = 1
if m[0] != ENTREPRISES_KEYS:
flash(
f'Veuillez utilisez la feuille excel à remplir (Feuille "Entreprises", ligne {ligne})'
)
return redirect(url_for("entreprises.import_donnees"))
for entreprise_data in m[1:]:
ligne += 1
entreprise_data[0] = entreprise_data[0].strip().replace(" ", "")
siret = entreprise_data[0]
if check_entreprise_import(entreprise_data) and siret not in siret_list:
siret_list.append(siret)
entreprise = Entreprise.query.filter_by(siret=siret).first()
if entreprise is None:
entreprise_import = Entreprise(
siret=siret,
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_import)
else:
entreprise.nom = entreprise_data[1].strip()
entreprise.adresse = entreprise_data[2].strip()
entreprise.ville = entreprise_data[3].strip()
entreprise.codepostal = entreprise_data[4].strip()
entreprise.pays = (
entreprise_data[5].strip()
if entreprise_data[5].strip()
else "FRANCE"
)
else:
flash(
f'Erreur lors de l\'importation (Feuille "Entreprises", ligne {ligne})'
)
return redirect(url_for("entreprises.import_donnees"))
if len(entreprises_import) > 0:
log = EntrepriseLog(
authenticated_user=current_user.user_name,
text=f"Importation de {len(entreprises_import)} entreprise(s)",
)
db.session.add(log)
return entreprises_import
def check_entreprise_import(entreprise_data):
""" """
Verifie les données d'une ligne Excel (entreprise) Verifie les données d'une ligne Excel (entreprise)
""" """
for data in entreprise_data[:-1]: # champs obligatoires
if data.strip() == "":
return False
siret = entreprise_data[0]
if EntreprisePreferences.get_check_siret(): if EntreprisePreferences.get_check_siret():
for data in entreprise_data: # champs obligatoires
if data.strip() == "":
return False
else:
for data in entreprise_data[1:]: # champs obligatoires
if data.strip() == "":
return False
if EntreprisePreferences.get_check_siret():
siret = entreprise_data[0].strip().replace(" ", "") # vérification sur le siret
if re.match("^\d{14}$", siret) is None: if re.match("^\d{14}$", siret) is None:
return False return False
try: try:
@ -340,7 +392,4 @@ def verif_entreprise_data(entreprise_data):
return False return False
except requests.ConnectionError: except requests.ConnectionError:
return False return False
entreprise = Entreprise.query.filter_by(siret=siret).first()
if entreprise is not None:
return False
return True return True

View File

@ -1422,44 +1422,33 @@ def import_donnees():
file.save(file_path) file.save(file_path)
diag, lm = sco_excel.excel_file_to_list_are(file_path) diag, lm = sco_excel.excel_file_to_list_are(file_path)
os.remove(file_path) os.remove(file_path)
if ( if len(lm) < 3:
len(lm) < 3 flash("Veuillez utilisez la feuille excel à remplir (3 feuilles)")
or lm[0][0] != are.ENTREPRISES_KEYS
or lm[1][0] != are.SITES_KEYS[0] + are.SITES_KEYS[1]
or lm[2][0] != are.CORRESPONDANTS_KEYS
):
flash("Veuillez utilisez la feuille excel à remplir")
return redirect(url_for("entreprises.import_donnees")) return redirect(url_for("entreprises.import_donnees"))
entreprises_import = are.check_entreprises_import(lm[0])
# en cours for entreprise in entreprises_import:
entreprises_import = [] db.session.add(entreprise)
siret_list = [] db.session.commit()
ligne = 1 db.session.refresh(entreprise)
for entreprise_data in lm[0][1:]: site = EntrepriseSite(
ligne += 1 entreprise_id=entreprise.id,
if ( nom=entreprise.nom,
are.verif_entreprise_data(entreprise_data) adresse=entreprise.adresse,
and entreprise_data[0].replace(" ", "") not in siret_list codepostal=entreprise.codepostal,
): ville=entreprise.ville,
siret_list.append(entreprise_data[0].replace(" ", "")) pays=entreprise.pays,
entreprise = Entreprise( )
siret=entreprise_data[0].replace(" ", ""), db.session.add(site)
nom=entreprise_data[1].strip(), db.session.commit()
adresse=entreprise_data[2].strip(), flash(f"Importation réussie")
ville=entreprise_data[3].strip(), return render_template(
codepostal=entreprise_data[4].strip(), "entreprises/import_donnees.html",
pays=entreprise_data[5].strip(), title="Importation données",
visible=True, form=form,
) entreprises_import=entreprises_import,
entreprises_import.append(entreprise) )
else:
flash(f"Erreur lors de l'importation")
return redirect(url_for("entreprises.import_donnees"))
return redirect(url_for("entreprises.import_donnees"))
return render_template( return render_template(
"entreprises/import_donnees.html", "entreprises/import_donnees.html", title="Importation données", form=form
title="Importation données",
form=form,
) )