-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Import de l'historique des entreprises #1397
Conversation
for etab in IcaEtablissement.objects.all(): | ||
if etab.etab_siret is not None: | ||
siret_matching = Company.objects.filter(siret=etab.etab_siret) | ||
if len(siret_matching) == 1: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question bête, j'imagine que de leur côté il y a une contrainte DB qui assure l'unicité du champ SIRET lorsqu'il est présent ? Est-ce qu'on pourrait se retrouver dans un cas où len(siret_matching)
est supérieur à 1 ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
La contrainte d'unicité existe du côté Compl'Alim, mais pas du côté Teleicare (en tout cas pas en BDD, ni sur le champ siret, ni sur le champ TVA intracom).
Donc les deux seules possibilités ici sont len(siret_matching) == 1
ou len(siret_matching) == 0
.
En revanche, on pourrait peut-être se retrouver avec un autre etab (dans une autre itération de la boucle) qui a le même siret et qui ferait un overwrite du siccrf_id
, je vais lever une exception dans ce cas, pour qu'on soit informés.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ajouté ici 8104147
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Si j'ai bien compris on doit exécuter ce script de création en local si on veut faire l'import de l'historique, et puis lors du dernier dump du SICCRF il faudra vider ces tables là avant de refaire l'import c'est ça ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je dirais qu'on ne veut pas faire l'import de l'historique en local (on ne veut pas forcément avoir ces données confidentielles sur nos ordis perso)
Normalement ce n'est pas indispensable au bon fonctionnement de l'appli Compl'Alim en tout cas...
Après, je pourrais faire des fixtures pour qu'on puisse malgré tout tester ça.
En en effet comme ce sont des données figées pas de souci de faire un psql -d complalim_db -c "truncate table ica_etablissement;"
dcl_date_fin_commercialisation = models.TextField(blank=True, null=True) | ||
|
||
class Meta: | ||
managed = False |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trop bien cette approche 👍
Closes part of #717
671654e consiste juste en un déplacement des fichiers relatifs à l'ETL des ingrédients.
Les tests sur les unmanaged model nécessitent une petite configuration supplémentaire décrite ici.
Pour importer les données Historiques de Teleicare, il a été décidé de :
prod
\copy
, préalablement convertis en UTF-8 -> fait surprod
. C'est une opération manuelle qui ne sera pas réitérée trop de fois.manage.py inspectdb
, cela génère des modèles unmanaged -> fait 1 foisLors de l'import définitif du dernier dump du SICCRF, il suffira de :
psql -d complalim_db -c "truncate table ica_etablissement;"
psql -d complalim_db -c "\copy ica_etablissement from 'ICA_ETABLISSEMENT_utf8.csv' delimiter ',' csv header;"
Ce n'est pas le même procédé que pour l'import des ingrédients qui est utilisé :
TODO next :
Ce qui a été essayé, sans succès :
-> le conneteur mssql est buggy sur linux
-> %dbsqlexec fail