forked from ScoDoc/ScoDoc
import feuille entreprises
This commit is contained in:
parent
74cd1400d8
commit
1ba5954762
@ -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
|
||||||
|
@ -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,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user