La configuration des scripts Python est simple et permet d'influer sur l'interface WWW et sur le mécanisme de recherche. ATTENTION, faites une copie de sauvegarde du script avant de le modifier.
Les scripts utilisés par l'interface WWW se trouvent dans les sous-répertoires de
/comm2/soft/httpd/cgi-bin/agora. Les scripts qui servent d'interface aux différentes bases de données sont semblables et sont reconnaissables par les suffixes query-result et full-display.
Par exemple, dans le répertoire /comm2/soft/httpd/cgi-bin/agora/info-ed-96/ se trouvent deux scripts:
info-ed-query-result.py* transforme le contenu du formulaire HTML, soumet la requête à mSQL et renvoie une liste d'enregistrements.
info-ed-full-display.py* affiche en entier un enregistrement
Notation
En Python, les chaînes de caractère sont entourées de guillemets : " ou '
dbname = "csre-info"
Pour écrire une chaîne de caractères sur plusieurs lignes on utilise les triple guillemets:
header = """ Ceci est le titre de mon document """
Les listes sont entourées de parenthèses carrées et leurs éléments sont séparés par des virgules:
multi_choice= ["SpracheChoice","vonChoice","bisChoice"]
Cette section présente les paramètres qui règlent le fonctionnement du script. Le script qui correspond à l'exemple se trouve ici: /comm2/soft/httpd/cgi-bin/agora/info-ed-96/info-ed-query-result.py. La zone des paramètres se trouve au début du fichier et se termine par le signe:
... paramètres .... # ## # # ##################################### # # # # No further changes below this line ... # # # ##################################### # # # ## #
Paramètres de base
Au début du fichier, une série de commentaires (signalés par #) donne quelques indications que nous complétons ci-après.
host: indique sur quelle machine réside la base de données qui est intérrogée par le script.
dbname: indique le nom de la base de données que le script interroge.
table: indique le nom de la table qui est concernée par le script
start_page: l'URL du formulaire qui appelle ce script
addition_page: l'URL du formulaire qui permet d'ajouter un enregistrement
full_script: l'URL du script qui affiche un enregistrement au complet
query_script: l'URL de ce script
temp_path: le répertoire qui héberge les fichiers temporaires produits par le script
logfile: le chemin et le nom du fichier qui contient une trace des requêtes soumises à ce script
host='tecfa.unige.ch' dbname = "csre-info" table = "info_ed" start_page = "http://agora.unige.ch/csre/info/msql/index.html" addition_page="http://agora.unige.ch/csre/info/msql/info_ed-addition-form.html" full_script = "http://tecfa.unige.ch/cgi-bin/agora/info-ed-96/info-ed-full-display.py" query_script = "http://tecfa.unige.ch/cgi-bin/agora/info-ed-96/info-ed-query-result.py" temp_path= '/temp/msql.temp/' logfile='/temp/msql.temp/info-ed-log'
Paramètres pour la requête
Ces paramètres permettent de régler l'étendue de la recherche et les champs à afficher en résultat.
select_list: donne la liste des champs qui seront présents dans les résultats du script. Le premier champ doit toujours être _rowid.
where_list: donne la liste des champs qui sont examinés en cas de recherche par mots-clé
multi_choice: énumère les listes à choix multiple (cf. 4-2 "Choix multiples HTML")
unique_list: liste des champs dont la valeur ne doit apparaître qu'une seule fois dans les résultats. (Utile lorsqu'une information est redondante à l'intérieur des données).
select_list = ["_rowid","Titel","Titel_ubersetzt","Deskriptoren","Descripteurs"] where_fields = ["Titel","Titel_ubersetzt", "Deskriptoren","Descripteurs"] multi_choice= ["vonChoice","bisChoice"] unique_list=[]
Choix multiples
Ces paramètres sont les plus difficiles à fixer. Nous avons vus le principe de la liste à choix multiples dans la section 4-2 "Choix multiples HTML".
Imaginons que nous avons un champ 'langue' dans notre base de données. Lors de la saisie, nous avons donné des codes aux langues. Ainsi, une valeur 1 signifie 'allemand', une valeur 2 signifie 'français' et une valeur 3 signifie 'italien'. Nous ne pouvons pas demander à l'utilisateur de choisir entre trois numéros (il ne sait pas quelle est leur signification) !
Pour remédier à ce problème nous définissons des dictionnaires qui font correspondre une valeur entrée par l'utilisateur à une valeur à utiliser pour la recherche dans la base de données. Le script va faire correspondre la valeur choisie par l'utilisateur (français) dans le formulaire et la valeur qu'il doit rechercher dans la base de données (2).
Le nom du dictionnaire est composé de deux parties: <nom_du_champ>Dict. Dans notre exemple : langueDict. Voici le dictionnaire:
langueDict = {'allemand':'1', 'français':'2', 'italien':'3' }
Les dictionnaires vonDict et bisDict correspondent aux éléments de formulaire vonChoice et bisChoice (cf. 4-2 "Choix multiples HTML"). Or, les valeurs des dates sont stockées sous une forme humainement compréhensible. Ainsi, dans cet exemple les dictionnaires ne servent pas à faire une transformation mais mettent en correspondance des valeurs identiques.
multi_boolean: règle le connecteur logique lorsque plus d'une valeur est sélectionnée dans une liste à choix multiples. Les valeurs possibles de ce paramètre sont " AND " et " OR ". (Il faut respecter les espaces avant et après).
multi_boolean = " AND " vonDict = {'1996':'1996', '1995':'1995', '1994':'1994', '1993':'1993', '1992':'1992', '1991':'1991', '1990':'1990', '1989':'1989', '1988':'1988', '1987':'1987', } bisDict = {'1996':'1996', '1995':'1995', '1994':'1994', '1993':'1993', '1992':'1992', '1991':'1991', '1990':'1990', '1989':'1989', '1988':'1988', '1987':'1987', }
Contacts
bug_report: l'adresse E-mail de la personne à conteacter en cas de problèmes.
contact_address: l'adresse E-mail de la personne à contacter pour des questions d'ordre général.
bug_report = "Patrick.Jermann@tecfa.unige.ch" contact_address = "skbf-csre@ping.ch"
Booléens
hide_rowid: peut prendre les valeurs 0 ou 1. Lorsque hide_rowid est égal à 0 le numéro interne des enregistrements est affiché dans les résultats. (En général on laisse hide_rowid à 1).
debug: peut prendre les valeurs 0 ou 1. Lorsque debug est égal à 1 des résultats intermédiaires sont ajoutés aux enregistrements affichés par le script. Ce mode permet de chercher une erreur éventuelle dans le programme en inspectant les variables.
allow_empty_query: peut prendre les valeurs 0 ou 1. Si la valeur est 1, les utilisateurs peuvent lancer une recherche sans avoir spécifié de mot clé. Tous les enregistrements de la table sont alors affichés. Si la valeur est 0, un message d'erreur est présenté à l'utilisateur qui ne spécifie pas de mots-clé dans son formulaire.
enable_add: ajoute un bouton 'Add a record' qui affiche un formulaire de saisie où les utilisateurs peuvent eux-même entrer des enregistrements.
hide_rowid = 1 debug = 0 allow_empty_query = 1 enable_add = 0
Header et Footer HTML
page_header: du code HTML affiché en haut de la page produite par le script
page_footer: du code HTML affiché en bas de la page produite par le script
page_header = """ <table border=0> <tr> <td><a href=\"http://agora.unige.ch/csre/\"><img alt=\"CSRE logo\" width=76 height=80 border=0 src=\"http://agora.unige.ch/csre/images/t_CSRE_logo.gif\"></a> <td> <font size=-2> Schweizerische Koorinationsstelle für Bildungsforschung<br> Centre suisse de coordination pour la recherche en éducation<br> Centro svizzero di coordinamento della ricerca educativa<br> Swiss co-ordination center for research in education </font> <td width=50> <br> <td align=right> Entfelderstrasse 61<br> CH - 5000 Aarau / Switzerland<br> <a href=\"mailto:skbf-csre@ping.ch\">skbf-csre@ping.ch</a><br> tél.: +41 (0) 62/ 835 23 90<br> fax: +41 (0) 62/ 835 23 99<br> </table> """ page_footer= """ <p><a href=\"http://Hughes.com.au/\"><img src=\"http://agora.unige.ch/images/msql-pwr.gif\" width=110 height=40 border=0 align=left></a> <address> <a href=\"mailto:%s\">%s</a></address> </body></html> """ % (contact_address,contact_address)
Le script full-display affiche en entier un seul enregistrement de la base de données. Le script qui correspond à l'exemple se trouve ici: /comm2/soft/httpd/cgi-bin/agora/info-ed-96/info-ed-full-display.py. La modification de ce script permet de changer l'apparence de la page HTML qu'il produit.
Au milieu du script se trouve une commande print qui produit le corps de la page.
Les %s sont remplacés dans l'ordre par les valeurs spécifiées à la fin de la commande print après le signe """ %. Ainsi, le premier %s qui apparaît est remplacé par la valeur de results["Nr"], le numéro de la recherche. Pour ajouter un hypothétique champ 'langue' il suffirait d'ajouter un %s dans le print et d'ajouter results["langue"] à la fin du print (attention à le mettre à la bonne place).
print """ <H4>Numéro. Nummer:</H4> %s <h4>Durée de la recherche. Laufzeit des Projekts</h4> %s - %s <h4>Titre de la recherche - Titel des Projekts:</h4> <h2>%s</h2> <h2>%s</h2> <H4>Institution:</H4> %s <H4>Chercheurs. Bearbeiter des Projekts</H4> %s <H4>Brève description de la recherche:</H4> %s <H4>Kurzbeschreibung des Projekts:</H4> %s <H4>Descripteurs (EUDISED):</H4> %s <H4>Deskriptoren (EUDISED):</H4> %s <H4>Publications. Veröffentlichungen:</H4> %s <H4>Méthodes de recherche. Methodische Anlage des projekts:</H4> %s <H4>Délimitation géographique. Geographischer Raum:</H4> %s <H4>Type de recherche. Art des projekts:</H4> %s <H4>Mandataire de la recherche. Auftragsgeber des Projekts:</H4> %s <H4>Financement de la recherche. Finanzierung:</H4> %s """ %(results["Nr"],results["von"],results["bis"],results["Titel"],results["Titel_ubersetzt"], results["Institution"],results["Forscher"],results["Abstract_frz"],results["Abstract_dt"],results["Descripteurs"],results["Deskriptoren"],results["Publikationen"],results["Meth"],results["Geo"],results["Typ"],results["Auftrag"],results["Finanzierung"])