Validateur code postal
Contexte
On a reçu un fichier avec seulement un code postal et un nom de commune par ligne. Ce n’est pas le premier d’habitude on fait un pré-traitement pour pouvoir importer ce fichier.
Contenu
On fait deux choses dans cette MR, je peux séparer au besoin :
- On ajoute la possibilité d’ajouter une colonne sans source
- On ajoute une validateur
code_insee_from_code_postal
Ajouter une colonne sans source
On ajoute une propriété nosource
au dataset qui permet de dire que cette colonne n’a pas de source dans le fichier actuel.
On peut s’en servir avec les validateurs format_with_row_values
et le validateur introduit dans cette MR code_insee_from_code_postal
code_insee_from_code_postal
Validateur
CODE_INSEE_PAR_CODE_POSTAL
Ajout de la constante On se sert de la table codes_postaux
déjà présente pour ajouter une constante contenant les codes postaux sous la forme d’un dictionnaire ayant pour clé les codes postaux et pour valeur un autre dictionnaire ayant lui pour clé les différents labels des communes et pour valeur les codes INSEE communaux.
Validateur
Ce validateur se sert de deux colonnes : une contenant le code postal, l’autre le libellé.
Il s’utilise comme suit :
- nosource: true
db:
type: VARCHAR(5)
column: insee_com
validators:
- path: "insitu.importer.validators.code_insee_from_code_postal"
params:
code_postal_column: Code postal
libelle_commune_column: Libellé Commune
- source: Code postal
db:
column: code_postal
type: TEXT
- source: Libellé Commune
db:
column: lib_com
type: TEXT
dans le cas d’un schema au format frictionless on ferait
fields:
- name: "Code postal"
type: string
- name: insee_com
type: string
insitu:
nosource: true
db:
type: VARCHAR(5)
column: insee_com
validators:
- path: "insitu.importer.validators.code_insee_from_code_postal"
params:
code_postal_column: Code postal
libelle_commune_column: "Localité du projet"
- name: "Localité du projet"
type: string
Il va chercher dans la constante CODE_INSEE_PAR_CODE_POSTAL
le dictionnaire ayant pour clé le code postal indiqué et va chercher, après une phase de normalisation, le libellé qui correspond pour trouver le code INSEE qui va bien