Importer des données

Traduction anglaise: Importing data

Présentation

Le module d'importation de données permet de créer des dizaines d'éléments (organisation, évènement, ...) de manière automatisée. C'est un outil efficace si vous avez, par exemple, un listing d'associations que vous souhaitez référencer dans Communecter.

Pour effectuer toutes ces actions il vous faudra le statut d'Admin Public. Demandez le sur le canal #co_dev_open du chat.

Résumé

  1. Télécharger le fichier type
  2. Remplir et sauvegarder votre tableau
  3. Utilisez le convertisseur pour obtenir votre json
  4. Laissez vous guider

Méthodologie détaillée

1 - Agréger les données

La première étape consiste à organiser les données en votre possession (par exemple la liste des associations de votre commune) pour qu'elles soient interprétables par le module d'import.

Pour cela, vous pouvez les mettres dans un tableau ou remplir un fichier json. Dans tous les cas on ne peut importer qu'un seul type d'élément à la fois (Organisations, Citoyens, Événements, ou Projets).

Pour les organisations il faudra au minima le nom, le type (par ex: entreprise), la ville, le code postal et le pays de chacune des organisations.

Méthode 1 : Tableau

  1. Choisissez et téléchargez un de ces fichiers selon ce que vous souhaitez importer : organisation, citoyen, évènement, projet
  2. Remplissez le tableau : une ligne = un élément
  3. Sauvegarder
Remarques
  • Nous vous conseillons d'utiliser LibreOffice
  • Sauvegardez toujours votre fichier en .csv
  • Privilégier les points virgules et les guillemets comme séparateurs (Enregistrer sous / Éditer les paramètres du filtre)
  • Vérifier bien que vous n'avez pas mis de saut de ligne dans les cellules (Ctrl-H / Autres options -> Expressions régulières / Rechercher \n et Remplacer par un espace / Tout remplacer)

Méthode 2 : Fichier json

  1. Choisissez et téléchargez un de ces fichiers selon ce que vous souhaitez importer : organisation, citoyen, évènement, projet

2 - Convertir

  1. Accédez à l'interface "Admin Public" de Communecter en haut à droite.
  2. Cliquez sur "Convertisseur"
  3. Choisissez le type d'élément que vous souhaitez importer
  4. Choisissez la source
  5. URL : lien vers un fichier JSON disponible en ligne
  6. FILE : fichier CSV ou JSON présent sur votre ordinateur
  7. [OPTIONNEL] Choisissez le bon lien (le mapping) Utile si le fichier est déjà formaté convenablement avec les colonnes dans le bon ordre, correspondant aux types d'éléments présents dans le fichier.
  8. Cliquez sur "Étape suivante"

Remarques

Pour les fichiers JSON, le champ "Path to Elements" indique où se trouve la données pertinentes.

Pour le code JSON suivant, la donnée pertinente se trouve dans le tableau "features". Dans ce cas de figure, il faut donc mettre "features" dans le champ "Path to Element".

{
   "type":"FeatureCollection",
   "features":[
      {
         "type":"Feature",
         "geometry":{
            "type":"Point",
            "coordinates":[
               55.433699,
               -21.259772
            ]
         },
         "properties":{
            "name":"Damien Grondin",
            "username":"Femu",
            "img":"http:\/\/127.0.0.1\/ph\/upload\/communecter\/citoyens\/5880b24a8fe7a1a65b8b456b\/1489667898_linkpkm.jpg"
         }
      }
   ]
}

3 - Création du mapping

Dans cette étape, on va réaliser ce qu'on appelle un mapping. C'est à dire renseigné à quel champ de l'onthologie PH correspond tel ou tel champ des données du fichier source.

  1. Dans la colonne de gauche (Source) : sélectionnez toutes les branches du fichier source.
  2. Dans la colonne de droite (Communecter) : sélectionnez le champ de l'onthologie PH auquel on veut associer la branche du fichier source de la colonne de gauche.

Avant de pouvoir passer à l'étape suivante, il est impératif de :

  • faire au moins une assignation dans le mapping
  • avoir renseigné la key dans le champ adéquat

key permet d'identifier les éléments créé dans le contexte de cette importation. On peut renseigner key à la création d'une carte pour afficher tous les points que vous venez d'importer.

Champs obligatoires selon le type d'élément

Organisations Citoyens Évènements Projets
name name name name
type* username Code Postal Code Postal
Code Postal birthdate Ville Ville
Ville Code Pays Code Pays
Code Pays

*NGO = Association , Group = groupe informel , LocalBusiness = Entreprise , GovernmentOrganization = Service public

Remarques

  • On ajoute une ligne simplement en cliquant sur la bouton "Ajouter" dans la troisième colonne.
  • On supprime une ligne en cliquant sur la croix rouge qui apparaît dans la troisième colonne lors d'un ajout de ligne.
  • On peut à tout moment sauvegarder le mapping actuel en cliquant sur le bouton "Save Mapping". (si lors de l'étape 1, on avait sélectionné un mapping enregistré, les boutons "Update Mapping" et "Delete Mapping" apparaissent. Bouton qui permettent respectivement de modifier ou de supprimer un mapping existant).
  • Si on clique sur le bouton étape précédente, le mapping reste enregistré jusqu'au nouveau rafraîchissement de la page.
  • La checkbox Test permet de tester la conversion et donc de visualiser les données qui sont bien converties ainsi que les données qui sont rejetée avec le message d'erreur qui décrit le pourquoi du rejet.

4 - Injecter des données

Le module d'import permet d'injecter par la suite ses données (préalablement convertie au format PH grâce aux convertisseur de données du module d'import) dans communecter. Seul le format JSON est autorisé.

Remarques

  • Une organisation ne doit apparaître qu'une seule fois dans le fichier
  • Avant de mettre un organisme, vérifier qu'il n'existe pas sur communecter.org
  • NE pas mettre formations/projets/ qui peuvent être regroupés dans une seule organisation.
  • Pour les téléphones
    • On peut en ajouter autant qu'on le souhaite
    • Format recommandé : "+33 6 00 00 00 00"*
    • Si plusieurs numéros, mettre un seul numéro par colonne
    • Différents types de téléphone : Mobile, Fixe et Fax
  • Pour les contacts
    • Nom et Prénom du contact
    • Rôle du contact au sein de l'organisme
    • Téléphone du contact ( Si plusieurs numéros, mettre un seul numéro par colonne)
    • Email du contact

Informations obligatoires et optionnelles

Obligatoire Optionnel
Nom de l'organisme Téléphones
Code Postal URL
Code Pays* Description
Ville Numéro et nom de la voie
Type** Email
Tags*
Site Web
Latitude / Longitude
Contact

* Exemples : FR, EN, RE. Liste complète ici.

** NGO, Group, LocalBusiness ou GovernmentOrganization (Voir l'annexe pour la concordance)

* Si plusieurs tags, mettre un seul tags par colonne

Annexes

Les Types

Organisations

  • NGO = Association
  • Group = Groupe informel
  • LocalBusiness = Entreprise
  • GovernmentOrganization = Service public

Format des adresses

Pour une adresse en France, Communecter va vérifier l'existance de l'adresse dans l'ordre suivant : DataGouv, Nominatim, puis Googlemaps.

Si avec la combinaison rue+CP+Ville+Pays, l'adresse ne donne pas de résultat via les 3 géocodeur, on refait une recherche avec seulement CP+Ville+Pays, si toujours pas de résultat l'import remonte une erreur.

Ontologie Pixel Humain

Dans le module Recherche de Communecter il y a des thématiques (ex : déchets, économie, citoyenneté, ...) regroupant tous les éléments ayant un tag parmi la liste de tags associé à la thématique en question. Par exemple quand on clique sur "Biodiversité" on y trouve les éléments ayant pour tag #biodiversite bien sûr, mais aussi #environnement ou #ecologie.

Cette liste est aujourd'hui définie par les développeurs.

{
    "\_id" : ObjectId("STRING"),
    "name" : "STRING",
    "email" : "STRING",
    "type" : "STRING",
    "address" : {
        "@type": "PostalAddress",
        "postalCode" : "STRING",
        "addressLocality" : "STRING",
        "codeInsee" : "STRING",
        "streetAddress" : "STRING",
        "addressCountry" : "STRING",
    "regionName": "STRING",
    "depName": "STRING"
    },
    "addresses" : [
        "address"
        ],
    "geo" : {
        "latitude" : "FLOAT",
        "longitude" : "FLOAT",
        "@type": "GeoCoordinates",
    },
    "geoPosition": {
        "type": "Point",
        "coordinates": [ 
           "latitude -> FLOAT",
           "longitude -> FLOAT"
            ]
},
    "description" : "STRING",
    "shortDescription" : "STRING",
    "url" : "STRING",
    "image" : "STRING",
    "urlFacebook" : "STRING",
    "urlTwitter" : "STRING",
    "source" : {
        "id" : "STRING",
        "url" : "STRING",
        "key" : "STRING",
        "keys": [ 
            "STRING"
    ],
"insertOrign": "STRING",
        "update" : "DATETIME"
    },
    "tags" : [ 
        "STRING"
    ],
    "telephone" : {
        "fixe" : [ 
            "STRING"
        ],
        "mobile" : [ 
            "STRING"
        ],
        "fax" : [ 
            "STRING"
        ]
    },
    "contacts" : [ 
        {
            "name" : "STRING",
            "role" : "STRING",
            "telephone" : [ 
                "STRING"
            ],
            "email" : "STRING"
        }
    ],
     "preferences" : {
        "isOpenData" : "BOOLEAN",
        "isOpenEdition" : "BOOLEAN",
    },
    "state" : "STRING",
    "profilImageUrl" : "STRING",
    "profilThumbImageUrl" : "STRING",
    "profilMarkerImageUrl" : "STRING",
    "profilMediumImageUrl" : "STRING",
    "modified" : "ISODate",
    "updated" :"INT",
    "links" : {
        "members" : {
            },
        "events" : {
            },
        "projects" : {
            },
         "memberOf" : {
            },
            "needs" : {
            }, 
            "follows" : {
            },
    },
    "modifiedByBatch" : [ 
        {
            "NameBatch" : "ISODate"
        }
    ],
    "creator" : "STRING",
    "created" : "INT"
}

Codes erreur

    "001" => "L'entité n'a pas de nom",
    // Partie concernant l'adresse
    "100" => "L'entité n'a aucune informations l'adresse.",
    "101" => "L'entité n'a pas de code postal.",
    "102" => "L'entité n'a pas de code INSEE.",
    "103" => "L'entité n'a pas de commune.",
    "104" => "L'entité n'a pas de pays.",
    "105" => "L'entité n'a pas de nom rue.",
    "106" => "Ce code postal n'existe pas dans notre base de données.",
    "110" => "Nous n'avons pas trouver la commune : Vérifier si le code postal et le nom de la commune soient bonnes",
    "111" => "Nous n'avons pas réussi a récupérer le nom de la commune car l'INSEE et le code postal ne sont pas compatibles. Vérifier l'adresse.",
    "112" => "Nous n'avons pas réussi récupérer le code INSEE. Vérifier l'adresse.",

    // Partie concernant la géolocalisation
    "150" => "L'entité n'a pas de géolocalisation.",
    "151" => "L'entité n'a pas de latitude.",
    "152" => "L'entité n'a pas de longitude.",
    "153" => "L'entité n'a pu être géolocalisé précisément : Repositionner le.",
    "154" => "Nous n'avons pas réussi à géolocaliser l'entité: Vérifier l'adresse et Repositionner le.",

    // Partie concernant la géolocalisation et l'adresse.
    "170" => "Incohérence entre la géolocalisation et le code postal. Vérifier l'adresse et la géolocalisation",
    "171" => "L'INSEE du fichier et celui retourné par la géolocalisation n'est pas le même.",
    "172" => "Le code postal du fichier et celui retourné par la géolocalisation n'est pas le même.",

    "201" => "Le nom est obligatoire.",
    "202" => "Le surnom est obligatoire.",
    "203" => "L'email est obligatoire.",
    "204" => "Le mot de passe est obligatoire.",
    "205" => "L'email n'est pas bien formaté.",
    "206" => "Une personne avec ce mail existe déjà sur la plateforme.",
    "207" => "Une personne avec ce username existe déjà sur la plateforme.",
    "208" => "Cette organisme n'a pas de type.",
    "209" => "Vous devez remplir un email valide pour le contactPoint.",
    "210" => "Cette personne n'a pas de username.",
    "211" => "Cette username a été généré automatique à partir du nom de l'utilisateur.",
    "212" => "Le Type \"Groupe\"  a été attribué a cette organisation. Veuilliez changer le type de l'organisation s'il ne correspond pas à ce type.",
    "250" => "L'entité a été mis a jour.",