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. {{{#!python # à lancer sous l'utilisateur "wcs" import csv import wcs import pickle FORM_PATH = '/var/lib/wcs/%s/formdefs/%s' FORM_SITE = 'test-formulaires.auf.org' FORM_NUM = '9' f_etab = file('/tmp/etablissements_bacgl.csv') l_etab = [] for l in csv.reader(f_etab): # format : "Établissement","Code CODA","Région","Pays" etab = '%s - %s (Sud/BACGL/%s)' % (l[3], l[0], l[1][4:]) l_etab.append(etab) f_etab.close() del(l_etab[0]) l_etab.sort() f_form = file(FORM_PATH % (FORM_SITE, FORM_NUM), 'r+b') form = pickle.reads(f_form.read()) form.fields[0].items = l_etab f_form.seek(0) f_form.truncate() f_form.write(pickle.dumps(form)) 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). ----