Commit f186fbc7 authored by Daniel Stan's avatar Daniel Stan

Rajout info README.md

parent 5d815de0
## Sous-dépôts
À cloner pour faire marcher certains scripts
......@@ -7,7 +6,10 @@
## Paquets Debian
Rajoutez-en si vous vous rendez compte qu'il en manque, à l'occasion.
Ce dépôt est conçu pour fonctionner sous Debian jessie, avec les paquets suivants
installés. Il est probablement possible de le faire marcher sous d'autres
distribution, mais cela n'a pas été testé. Les paquets Debian suivants
sont nécessaires :
* python-ldap
* python-netifaces
......@@ -23,9 +25,84 @@ Rajoutez-en si vous vous rendez compte qu'il en manque, à l'occasion.
* python-tz
* python-netaddr
Pour une installation facile, copier-coller cette liste dans la commande :
`sudo apt-get install $(sed 's/ \* //')`
## testing.sh
La racine du dépôt contient un fichier nommé `testing.sh` contenant les
réglages de test à appliquer aux scripts lancés. Ce fichier est automatiquement
lu, pour peu que le dépôt cloné ne soit pas enregistré dans `/usr/scripts` !
Par défaut, `testing.sh` définit de nombreuses variables d'environnement, qui
forcent les scripts à travailler en mode test, c'est-à-dire, sans toucher
à la vraie base ldap, ni pgsql, mais en utilisant les bases de test sur vo.
Modifiez-le au besoin (il est commenté !), notamment si vous voulez produire
un environnement de test sur votre machine personnelle, plutôt que sur vo.
## python.sh
Les fichiers python marqués comme executables doivent posséder le shabang
`#!/bin/bash /usr/scripts/python.sh`. python.sh se charge d'appeler `testing.sh`,
si besoin, mais également de régler l'environnement `PYTHONPATH`.
Ainsi, il est inutile de manipuler soi-même `sys.path` depuis les scripts python,
cela est même déconseillé, car cela ne permet pas de travailler sur une copie
de test du dépôt ! Faîtes tous vos imports depuis la racine du dépôt
(par exemple `import gestion.affichage`).
Il est également possible de démarrer une session ipython avec l'environnement
de test défini par `testing.sh`, à l'aide de la commande suivante :
`./python.sh ipython `
Un fichier executable devrait également posséder une section
`if __name__ == '__main__':`
## Envoi de mail
Le système de mail a été unifié, afin d'éviter les erreurs récurrentes sur
le formattage de mail.
Pour écrire un script d'envoi de mail, il faut :
* Écrire un nouveau template dans `./gestion/mail/template/$nom_du_mail/`.
Chaque sous-dossier correspond à un en-tête (sauf body), qui contient un
fichier par langue (fr, en …)
* Importer le module de mail: `from gestion import mail`
* Se placer dans un nouveau contexte `mail.ServerConnection()`
* Envoyer le mail à l'aide de la méthode `send_template`, prenant en argument
le nom du template, et un dictionnaire des données à envoyer.
* Les données à envoyer peuvent contenir le destinataire (champs `to`) ou
directement l'adhérent (champ `adh`).
`
import gestion.mail as mail
with mail.ServerConnection() as conn_smtp:
for adh in connexion_ldap.search(u'aid=*', sizelimit=4000):
mail.send_template('mon_template', {'adh': adh, 'message': u'Coucou !'})
`
Ce fonctionnement présente plusieurs avantages :
* À terme, il sera possible d'envoyer le mail dans la langue native de l'adhérent automatiquement
* Il est facile d'envoyer un mail multipart
* Le context manager assure qu'une seule connexion smtp est effectivement ouverte
* En récupérant directement l'objet adhérent, send_template détermine automatiquement
l'adresse de destination, voire abandonne l'envoi si l'adhérent possède une blackliste
`mail_invalide`.
* En environnement de test, le mail n'est pas envoyé par défaut au vrai destinataire
(cf `DBG_MAIL` dans `testing.sh`)
## Conventions de codage
* On essaie de respecter le plus possible <a href="http://www.python.org/dev/peps/pep-0008/">PEP8</a>.
* Utiliser exclusivement des espaces pour indenter ses blocs : **4** espaces = **une** indentation.
* Respecter l'<a href="http://nedbatchelder.com/text/unipain/unipain.html#1">unicode sandwich</a>
* Pour les codages d'entrées/sorties, privilégier l'utf-8
* Les scripts python doivent être encodés en utf-8 ( header `# -*- coding: utf-8 -*-`)
## À faire
* Expliquer l'environnement de test
* tunnel pour apprentis
* http://stackoverflow.com/questions/8021/allow-user-to-set-up-an-ssh-tunnel-but-nothing-else
* snmp et les mibs ! !!
* snmp et les mibs ! !!
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment