Package: libsne
LibsneLibrairie Python gérant les échanges synchrones de numéros uniques avec
le Système National d’Enregistrement (SNE) des demandes de logements
sociaux dans le cadre de leur gestion.Cette librairie permet de gérer plusieurs étapes dans le processus
d’échanges de numéros uniques SNE :Récupération d’une chaîne de caractères ou d’un arbrelxml.etreereprésentant la structure XML de la demande de logement ;Construction du message SOAP à envoyer au serveur SNE selon le
protocole XOP/MTOM (comme spécifié dans lecahier des charges des
interfaces
SNE)
;Échanges avec le serveur SNE selon le protocole HTTPS/TLS grâce à
l’authentification et la signature par système de certificats ;Analyse de la réponse du serveur SNE, construction des exceptions
selon le type d’erreur (enveloppe SOAP, anomalies dans le XML, …),
ou retour de réponse si pas d’erreur.5 services Web (sur les 6 proposés par SNE, voir cahier des charges)
sont disponibles. Au sein de la librairie, ces services sont définis en
enlevant legetet en remplaçant la première lettre par une
minuscule (ex :getDemandeLogementdevientdemandeLogement) :getNumUniqueayant comme paramètre la demande de logement sous
forme de chaîne de caractères représentant la structure XML de la
demande (paramètre :xml) ;getDemandeLogementayant comme paramètre le numéro unique SNE
(paramètre :num_unique) ;getDoublonsayant comme paramètre une demande de logement
partielle sous forme de chaîne de caractères représentant la
structure XML de la demande (paramètre :xml) ;(getNouveauxDaloDepuisLeayant comme paramètre la date à partir
de laquelle chercher les nouveaux DALO (paramètredateau formatYYYY-MM-DDTHH:MM:SS.s+HH:MMpar rapport à UTC).)(getDemandesRadieesDepuisLeayant comme paramètre la date à
partir de laquelle chercher les nouvelles demandes radiées (paramètredateau formatYYYY-MM-DDTHH:MM:SS.s+HH:MMpar rapport à
UTC).)Ces deux derniers services ne fonctionnent pas correctement,
améliorations bienvenues :)La librairie est compatible Python 2 et Python 3.InstallationEn tant que logiciel libre, il est préférable d’utiliser la librairie
SNE sur les systèmes d’exploitation GNU/Linux (Debian, Ubuntu, Mint,
…).Installation via PIPLa librairie SNE (version alpha) est disponible sur PyPI et peut être
installée en ligne de commande (l’installation peut prendre du temps,
notamment pour lxml) :pipinstall--prelibsneInstallation via GitLa librairie SNE est disponible sur laforge de Cliss
XXIet peut être clonée
via Git. Cependant l’installation via git s’adresse surtout aux
développeurs. Voir le paragraphe Développement pour plus d’informations.ConfigurationLes fichiers ressources sont ajoutés automatiquement lors de
l’installation. Cependant, ils peuvent changer à tout moment ! Se
renseigner sur lesite du
gouvernement.Comment l’utiliserPythonPour utiliser la librairie SNE depuis un code externe Python, il faut
appeler la fonction echanger qui prend en paramètres le nom du service,
le chemin du fichier contenant la chaîne publique de certificats, le
chemin du fichier contenant la clé privée, optionnellement le nom d’hôte
de SNE (défaut ànuu-ws.ecole.application.developpement-durable.gouv.frsur le port
443 si non fourni) et le paramètre du service sous forme de kwargs.Exemples :importlibsnereponse_serveur=libsne.echanger("demandeLogement","certificats/public/fullchain.pem","certificats/prive/key.pem",num_unique="0123456789ABCDEFGH")reponse_serveur=libsne.echanger("numUnique","certificats/public/fullchain.pem","certificats/prive/key.pem",xml=xml_demande)reponse_serveur=libsne.echanger("demandesRadieesDepuisLe","certificats/public/fullchain.pem","certificats/prive/key.pem",date="2017-01-13T14:55:43.5+02:00")# Ne fonctionne pas correctement actuellementLigne de commandeLa librairie est aussi utilisable en ligne de commande.Exemples :./libsne.pydemandeLogement0123456789ABCDEFGHcertificats/public/fullchain.pemcertificats/prive/key.pem./libsne.pynumUnique[xml_demande]certificats/public/fullchain.pemcertificats/prive/key.pem./libsne.pydemandesRadieesDepuisLe2017-01-13T14:55:43.5+02:00certificats/public/fullchain.pemcertificats/prive/key.pem# Ne fonctionne pas correctement actuellementDocumentationCeREADMEet les docstrings :)DéveloppementIl est préalablement nécessaire de monter un environnement de
développement :gitclonehttps://forge.cliss21.org/cliss21/libsne.gitcdlibsnevirtualenvvenv.venv/bin/activatepipinstall-rrequirements_dev.txtpipinstall-e.TestsUne fois l’environnement de test deployé, les tests peuvent être lancés
de la manière suivante :./tests.sh# TODO: faire un Makefile
# TODO: jouer les tests avec toxDéploiement sur PyPILa librairie étant disponible sur PyPI, il est possible pour les
développeurs de la librairie de mettre à jour le paquet Python. Pour
cela, il est usuel de créer un fichier .pypirc à la racine du home de la
machine (~/.pypirc) contenant les informations nécessaires au
déploiement :[distutils]index-servers=pypitestpypi[testpypi]repository=https://test.pypi.org/legacy/username=LOGINpassword=PASS[pypi]username=LOGINpassword=PASSNe pas oublier de se rendre dans l’environnement virtuel si vous n’y
êtes pas encore. Il sera ensuite possible de pousser la librairie sur
PyPI :# Sur testpypipythonsetup.pybdist_wheelupload--repositorytestpypi# Sur pypipythonsetup.pybdist_wheeluploadContactsVous pouvez contacterCliss XXIpour plus
de détails sur la librairie.LicenceLa librairie est disponible librement sous licenceGNU
AGPLv3+. Voir le fichierLICENSEpour plus de détails.