doc/administration.rst
changeset 145 7c6fe1dab213
parent 137 bb8bf2688d7e
child 147 e4d53c64f0d0
--- a/doc/administration.rst	Tue Oct 08 17:25:39 2013 +0200
+++ b/doc/administration.rst	Fri Oct 11 11:46:18 2013 +0200
@@ -27,7 +27,7 @@
 Commande d'administration
 =========================
 
-Voici une liste des commandes ser vant à gérer l'import et l'export des notices (``Record``). 
+Voici une liste des commandes servant à gérer l'import et l'export des notices (``Record``). 
 
 
 .. _admin-import-record:
@@ -242,13 +242,16 @@
 Cette commande est fournie par le module Django ``Haystack``. Sa documentation se trouve à l'adresse suivante : http://django-haystack.readthedocs.org/en/v2.1.0/management_commands.html
 
 
-console d'administration / gestion des utilisateurs
-===================================================
+console d'administration
+========================
 
 Le back-office offre une console d'administration donnant accès en particulier à la gestion des utilisateurs.
 On y accède par le lien ``admin`` dans l'en-tête des pages si on est connecté en tant qu'administrateur ou bien en allant directement à l'adresse ``<racine du site>/p4l/admin/``.
 
 
+gestion des utilisateurs
+------------------------
+
 L'administration des utilisateurs se fait à l'adresse suivante : ``<racine du site>/p4l/admin/p4l/user/``.
 
 L'administration des groupes d'utilisateurs se fait à l'adresse suivante: ``<racine du site>/p4l/admin/auth/group/``.
@@ -263,4 +266,45 @@
 
 Pour faciliter la gestion de ces permissions, le plus simple est de créer un groupe ``utilisateurs``. On affectera à ce groupe toutes les permissions sur les objects de l'application ``p4l``.
 il suffira ensuite de mettre les utilisateurs dans ce groupe (champ ``Groupes`` dans l'interface d'édition des utilisateurs). L'utilisateur héritera alors des parmissions du groupe.
- 
+
+
+Lancement d'un script
+---------------------
+Il est possible de lancer un script à partir de l'adresse suivante : ``<racine du site>/p4l/admin/confirm_script``.
+
+Le script qui est exécuté est configuré par la propriété ``ADMIN_SCRIPT`` dans la configuration de l'application (``src/p4l/config.py``).
+Cette propriété est un dictionnaire dont les clés sont les arguments du constructeur de subprocess.Popen.
+Tous les arguments et le fonctionnement de cet objet sont détaillés à l'adresse suivante : http://docs.python.org/2/library/subprocess.html#popen-constructor
+Tous les arguments sont configurables sauf les suivants : ``stdout``, ``stderr``, ``bufsize``, ``close_fds``, ``preexec_fn``.
+Cependant les quatres suivants seront les plus utiles:
+  * `args`: soit une séquence d'arguments de programme, soit une chaine de caractères
+  * `cwd`: le chemin du reepertoire de travail. Par défaut : ``None``
+  * `env`: dictionnire donnant les variables d'evironement positinnées durant l'éxeecution du script.
+
+Il est recommandé que ``args`` soit une liste d'arguments et non une simple chaîne de caractères.
+
+L'example suivant démontre comment on peut configurer cette propriété pour lancer le dump des notices avec la commande ``dump_record``.
+
+.. code-block :: python
+
+ADMIN_SCRIPT = {
+    'args' : [ sys.executable, "manage.py", "dump_record", "--newline", "-j", "/tmp/script_dump.rdf.bz2"],
+    'cwd' : "<chemin absolu des sources l'application>/src",
+    'env' : {'PYTHONPATH': '<chemin absolu de l'environement virtuel>/lib/python2.7/site-packages'}
+}
+
+
+Plusieurs points sont à noter:
+
+  * L'utilisation de cette fonctionnalité est à priori réservé pour une application installé sous Unix. (cela peut fonctionner sous Windows, mais cela n'a pas été testé)
+  * La fermeture de la fenêtre du navigateur ne stoppe pas la commande
+  * En particulier si la session de l'utilisateur expire ou bien que la fenêtre du browser est fermée, il n'y a plus possibilité de stopper le processus à partir d'un browser.
+    Le processus devra être interompu par les moyens habituels directement sur le serveur
+  * La commande est lancée dans le contexte du serveur web. Elle est donc executé par l'utilisateur du serveur web et hérite de ces droits d'accès.
+  * Tout démarrage du serveur web stoppe la commande.
+  * La commande partage les ressources du serveurs web. Attention donc à ne pas lancer des commandes trop gourmandes en ressources, cela peut avoir des conséquences sur la stabilité du serveur web et sa disponibilité.
+  * L'affichage de la sortie de la commande dans le browser se fait ligne par ligne.
+    Si la sortie de la commande ne comporte pas de caractère de retour à la ligne (``"\n"``) rien ne s'affichera avant la fin de la commande.
+  * Les sorties erreur et standard sont affichée ensemble sans différentiation.
+
+ 
\ No newline at end of file