Prise en main
=================

Création de la base MySQL
--------------------------

`createdb.sh` utilise le schéma SQL de la base MySQL (`aaf.sql`) pour créer la
table "aaf".

Lecture du XML
-----------------

- `aaf.py` pour les données complètes, lancer l'exécutable `parseaaf.py`.
- `delta.py` pour les mises à jour de données existantes (les XML *deltas*),
  lancer l'exécutable `parsedelta.py`

Génération du ldif
-------------------

`gentemplate.py` génère le modèle de ldif (le template cheetah utilisé pour
générér le ldif), il est lancé une seule fois. Il permet de générer des modèles
en fonction des attribut `must` ou `may` qui sont dans `attribute.py`.

:func:`gentemplate.gen_template()` génère les fichiers

- `etablissement.ldif`
- `eleve.ldif`
- `responsable.ldif`
- `enseignant.ldif`

`genldif.py` génère les ldifs (sur le modèle des templates générés par
`gentemplate.py`)

Les données à insérer dans le ldap
-------------------------------------

les données à insérer dans le ldap ne sont pas tout-à-fait celles dans la base, 
il y a des donnnées supplémentaires et des données modifiées.

le :class:`genldif.LdifTranslator` permet de

- récupérer les champs d'une table sql données sous la forme d'un dictionnaire

- ajouter des champs (par copie) comme s'ils étaient dans la base.
  le dictionnaire de mapping des champs de la table porte le nom de la table sql

- transformer ces champs par l'appel d'un callback particulier. Ce callback est
  une méthode de la classe :class:`genldif.LdifTranslator`


c'est le travail de la méthode :meth:`genldif.LdifTranslator.translate()`


Enfin, et pour chaque table, des champs sont modifiés/rajoutés/calculés de
manière spécifique à la table, ces traitements sont donc déportés des
traitements génériques de la classe :class:`genldif.LdifTranslator`.

::

          pour l'instant, le ldif est généré sur la sortie standard.
          enregistrer cette sortie dans un fichier, faire des fonctions
          qui écrivent dans un descripteur de fichiers.



