Modifications entre les versions 1 et 2
Version 1 à la date du 2010-10-27 18:01:44
Taille: 1352
Commentaire: la sale bidouille du jour… ;-)
Version 2 à la date du 2010-10-27 19:10:32
Taille: 1848
Commentaire: on rajoute une couche…
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
Cette page présente une « sale bidouille totalement inacceptable™ » pour importer des données depuis un fichier CSV vers W.C.S. Cette page présente une '''« sale bidouille totalement inacceptable™ »''' pour importer des données depuis un fichier CSV vers W.C.S.
Ligne 6: Ligne 6:

/!\ Encore une fois, cette méthode est absolument déconseillée et n'est présentée ici qu'à titre de '''mauvais exemple''' (mais qui marche, pour l'instant…), la bonne méthode, qui sera à étudier dès que possible pour remplacer celle-ci, serait d'accéder au champ du formulaire via l'API de W.C.S., voir même idéalement de développer (et publier) la fonctionnalité d'import depuis un fichier directement dans l'interface web de W.C.S.
Ligne 37: Ligne 39:
Le champ unique du formulaire contient alors les données du fichier CSV. Après lancement de ce script le champ unique du formulaire contient alors les données du fichier CSV.
Ligne 40: Ligne 42:
----

Cette page présente une « sale bidouille totalement inacceptable™ » pour importer des données depuis un fichier CSV vers W.C.S.

Pré-requis : avoir créé un formulaire avec un unique champ de type "liste" (c'est ce formulaire qu'identifie le numéro 9 dans le script ci-dessous).

Vu que je suis un peu pressé… je n'y vais pas par 4 chemins : démonstration par l'exemple !

/!\ Encore une fois, cette méthode est absolument déconseillée et n'est présentée ici qu'à titre de mauvais exemple (mais qui marche, pour l'instant…), la bonne méthode, qui sera à étudier dès que possible pour remplacer celle-ci, serait d'accéder au champ du formulaire via l'API de W.C.S., voir même idéalement de développer (et publier) la fonctionnalité d'import depuis un fichier directement dans l'interface web de W.C.S.

   1 # à lancer sous l'utilisateur "wcs"
   2 import csv
   3 import wcs
   4 import pickle
   5 
   6 FORM_PATH = '/var/lib/wcs/%s/formdefs/%s'
   7 FORM_SITE = 'test-formulaires.auf.org'
   8 FORM_NUM = '9'
   9 
  10 f_etab = file('/tmp/etablissements_bacgl.csv')
  11 l_etab = []
  12 for l in csv.reader(f_etab):
  13   # format : "Établissement","Code CODA","Région","Pays"
  14   etab = '%s - %s (Sud/BACGL/%s)' % (l[3], l[0], l[1][4:])
  15   l_etab.append(etab)
  16 
  17 f_etab.close()
  18 del(l_etab[0])
  19 l_etab.sort()
  20 
  21 f_form = file(FORM_PATH % (FORM_SITE, FORM_NUM), 'r+b')
  22 form = pickle.reads(f_form.read())
  23 form.fields[0].items = l_etab
  24 f_form.seek(0)
  25 f_form.truncate()
  26 f_form.write(pickle.dumps(form))
  27 f_form.close()

Après lancement de ce script le champ unique du formulaire contient alors les données du fichier CSV.

Ce champ pré-rempli peut ensuite être importé dans un autre formulaire en utilisant la fonction « importation des champs d'un formulaire » (dans l'édition des champs du formulaire).


Etude/WCS/ImportCSV (dernière édition le 2010-10-27 19:10:32 par JeanChristopheAndré)