Accueil > Informatique > Nouveau logiciel libre de gestion d’une bibliothèque: Alessandria

Nouveau logiciel libre de gestion d’une bibliothèque: Alessandria

Aujourd’hui j’aimerais vous présenter Alessandria, un logiciel de gestion de bibliothèque. Grâce à cette application, il est possible de gérer les livres, les lecteurs et les emprunts dans une bibliothèque.

A l’origine, j’ai développé ce logiciel pour répondre à un besoin bien précis: gérer la bibliothèque d’une petite commune française. Le personnel souhaitait effectuer cette gestion en utilisant un tableur. Étant développeur je me suis dit qu’on pouvait faire beaucoup mieux. Avant de réinventer la roue je me suis penché sur les solutions libres existantes telles que Koha ou encore PMB, très complètes et professionnelles mais nécessitant un temps d’apprentissage important. Du coup j’ai décidé de réaliser moi-même un logiciel facile à prendre en main et adapté aux besoins d’une petite structure. C’est ainsi qu’est né le logiciel libre Alessandria.

Fonctionnalités principales

  • Gestion des livres avec possibilité d’import ISBN
  • Gestion des auteurs et éditeurs
  • Gestion des lecteurs
  • Gestion des prêts

Le logiciel est actuellement en version 0.95 qui peut être considérée comme un version beta. Elle est cependant déjà utilisée en « production ». La version 1.0 intègrera un module qui permettra aux bibliothécaires d’effectuer toute une série de statistiques sur une période donnée, par exemple: « Quelle est la proportion de romans policiers empruntés sur l’année 2016 ? ».
A noter que l’application a été pensée dès le départ pour être multilingue.

Caractéristiques techniques

Captures d’écrans

alexandrie-page_accueil

Page d’accueil

 

 

 

 

 

 

 

alexandrie-emprunts_en_cours

Emprunts en cours

 

 

 

 

 

 

alexandrie-saisie_livre

Saisie d’un livre

 

 

 

 

 

 

alexandrie-import_isbn

Import ISBN

 

 

 

 

 

 

alexandrie-auteur

Saisie d’un auteur

Categories: Informatique Tags: .: bibliothèque .: django .: logiciel .: python
  1. 23/03/2016 à 12:18 | #1

    OMG génial 🙂
    Je suis utilisateur quotidien de Koha 🙂 et je trouve ça intéressant.
    Dommage que ça soit en Django / Python sinon j’aurai testé.
    Du coup, tu as une démo à tester en ligne ? 😀
    Histoire de s’amuser un peu 😉

    As-tu prévu un OPAC ensuite ?
    Catalogue consultable en externe en fait.

  2. 23/03/2016 à 14:40 | #2

    Cool, mais ce serait pas mal d’avoir quelques captures d’écran pour voir à quoi ça ressemble.

  3. Nicolas
    23/03/2016 à 16:10 | #3

    bonjour

    Je suis très intéressé mais à titre personnel pour ma propre bibliothèque. je vais essayer même si je connais plus ruby on rails que django.
    Pensez vous qu’il soit possible d’utiliser sur une application web la webcam pour reconnaître les codes barres isbn ?

    à bientôt

  4. Ned
    23/03/2016 à 16:15 | #4

    Hello,

    juste une petite remarque suite à la lecture d’un article de Korben sur Kik : Alexandrie est le nom d’un logiciel de gestion documentaire édité par gbconcept, ça serait dommage que tu te retrouves dans une bataille pour le nom de ton projet…
    HTH

  5. Netchaiev
    23/03/2016 à 22:05 | #5

    Attention !!! Il existe un logiciel commercial du même nom qui joue dans la même catégorie .
    Le non ce logiciel est sans doute protégé …

    http://www.gbconcept.com/

  6. Marco
    24/03/2016 à 08:34 | #6

    Salut,
    Pas encore de démo en ligne, mais je vais y penser. Dans les prochains temps je dois réinstaller mon serveur dédié, j’en profiterai pour mettre une démo en ligne.
    Pour ce qui est de l’OPAC, oui ça serait intéressant, et cela peut être envisagé dans les versions futures mais je souhaite d’abord terminer les fonctions essentielles pour la gestion interne.

  7. Marco
    24/03/2016 à 08:36 | #7

    Oui il faut que je vois comment le gérer, ça pourrait être super intéressant. Mais honnêtement je n’ai pas fait encore de recherche à ce niveau.

  8. Marco
    24/03/2016 à 08:39 | #8

    Mince c’est vrai qu’au début comme ce n’était qu’une application « personnelle » je ne me suis pas trop posé de question. Bon ben va falloir se triturer les méninges maintenant. Merci pour le retour.

  9. Marco
    24/03/2016 à 09:08 | #9

    @NiKaro
    Voilà c’est fait ! Comme vous pouvez le voir la partie design est minimaliste et clairement à améliorer…

  10. 24/03/2016 à 14:48 | #10

    Pour aller plus loin, quelques remarques de bibliothécaire :
    – tu gères l’import Electre (j’ai un doute :p)
    – idem pour la catalogage BNF ?
    – en fait tu gères de l’UNIMARC ? Ou tout est codé en MySQL sans utilisé de « langage bibliographique » comme l’UNIMARC ?
    – intérêt d’avoir une liste « emprunts » indépendantes de la partie « Lecteurs » ? Question sans animosité hein, c’est juste que personnellement dans mon boulot je n’ai pas l’intérêt de savoir ça car soit tu cherches un livre dans le catalogue et tu as l’emprunteur soit tu cherches un emprunteur/lecteur et tu vois ce qu’il a emprunté
    – et la remarque Bonux : il me semble que la Loi FR impose que le logiciel garde une trace des emprunts des lecteurs (pour la Justice, au cas où) ET la CNIL demande que cette liste ne soit pas accessible aux utilisateurs du logiciel (malgré le fait que les p’tits vieux se souvienne plus de leurs emprunts donc tu veux les aider tu mates l’historique mais c’est illégal).
    J’ai presqu’envie de monter une machine virtuelle pour tester ça mais je ne sais pas installer Django and co 😉

  11. Marco
    24/03/2016 à 19:11 | #11

    @Gilles
    Salut Gilles,
    En fait je suis parti d’un besoin basique, donc l’idée est de faire quelque chose de très simple au départ et petit à petit d’implémenter de nouvelles fonctions. Donc pour l’instant je ne gère ni Electre, ni BNF, ni UNIMARC tout simplement parce que les utilisateurs de la bibliothèque pour qui j’ai réalisé l’application ne m’en ont pas parlé. Il faut bien avoir à l’esprit qu’il s’agit d’une bibliothèque d’une toute petite commune.
    Pour la liste des emprunts indépendante c’est juste un raccourci pour avoir rapidement la liste des emprunts en retard par exemple.
    Pour ce qui est de la CNIL je ne savais pas qu’il y avait cette restriction. En gros tu me dis que les bibliothécaires n’y ont pas accès, mais que les lecteurs (s’ils ont un accès externe évidemment) peuvent consulter leur historique ?
    En tout cas je te remercie pour tes remarques, elles sont précieuses vu que tu es du métier :-). Tout le défi en ce qui me concerne est de rester dans une application simple d’utilisation tout en fournissant les fonctions indispensables à la gestion d’une bibliothèque. Sinon il n’y a pas trop d’intérêt autant utiliser des solutions libres existantes comme Koha ou PMB…

  12. Marco
    24/03/2016 à 21:04 | #12

    Le projet s’appelle désormais « Alessandria » 🙂

  13. 25/03/2016 à 08:01 | #13

    Je comprends les besoins 🙂
    PERSONNE n’a le droit d’avoir accès aux données de prêt, mais peut-être qu’en effet les lecteurs pourraient avoir accès à leur historique mais comme les bibliothécaires le pourraient aussi, je pense que c’est un peu… illégal ?
    Faudrait voir mais c’est sûrement mieux s’il n’y a pas d’historique enregistré.
    Après, à toi de voir, c’est un sujet épineux chez les bibliothécaires 😉
    Pour Koha ou PMB, faut quand même maîtriser pas mal de connaissances pour les utiliser, ce n’est pas pour rien qu’il y a des prestataires pour ça 😉
    Je me suis abonné au flux des comm. de ce billet 😉

  14. Marco
    25/03/2016 à 08:35 | #14

    @Gilles
    Oui dans l’absolu je comprends qu’il soit illégal d’avoir l’historique des prêts. Maintenant en pratique c’est quand même franchement bien de pouvoir dire à la personne: « tiens on a rentré tel livre de tel auteur » après avoir vu qu’elle aimait bien cet auteur. De plus jusqu’à maintenant les bibliothécaires avaient accès à l’historique avec leur gestion de fiches manuelles. Mais ceci dit je vais en parler au responsable et voir sa réponse 🙂

  15. 25/03/2016 à 08:48 | #15

    Pas de souci, ce n’est pas facile à gérer et je dis bravo parce qu’au niveau de Koha, je suis l’interlocuteur du prestataire donc je vois ce qu’il y a derrière et c’est du boulot !
    Même si forcément Koha gère plus de choses (PHP/MYSQL/PERL/autre techno) (200 000 notices chez nous).
    Tu récupères les infos du livre avec un « scrapper » sur Amazon ?
    Si jamais tu veux des infos pour récup. sur la BNF ou MOCCAM (gratuitement en fait), hésite pas à demander.
    Idem si tu veux des retours… quand il y aura une démo 😉

  16. Marco
    25/03/2016 à 11:59 | #16

    @Gilles
    Pour récupérer les infos j’utilise une bibliothèque Python « isbnlib » avec le service web par défaut qui est un mix des informations récupérées depuis worldcat.org et Google Books service. Mais a priori la qualité des informations n’est pas optimale. D’ailleurs il y a cet avertissement: « The retiring of the xISBN service implied a huge drop in data quality for metadata and editions. For non-US books, the situation is really bad, many of them have no Publisher information available! ». Du coup il va falloir que j’étudie ça de plus près :-).
    Du coup Je veux bien des informations sur la BNF / MOCAM…
    Pour ce qui est de la démo dès qu’elle sera prête je publierai une info.
    En tout cas merci beaucoup pour ton soutien !

  17. 25/03/2016 à 12:46 | #17

    En France, les bibliothécaire récupèrent des notices, c’est-à-dire un fichier avec les infos codées selon une norme (Unimarc mais ça peut être aussi du plus simple genre XML).
    Ensuite les SIGB intègrent ces fichiers dans le catalogue et le bibliothécaire ajoute un exemplaire à la notice ainsi créé.
    J’ai testé un export MOCCAM en EXCEL, voici le fichier que ça donne : http://dl.free.fr/getfile.pl?file=/ecMZsbFM
    Tu ouvres dans Excel, ça foire un peu dans Calc, si tu peux.
    Au final tu as tes infos et tu dois pouvoir insérer ça en base de données.
    MOCCAM est gratuit et tu peux récupérer plusieurs notice d’un coup.
    Mais l’import dans un SIGB demande du codage car il faut vérifier que la notice existe ou pas (via un check par ISBN), proposer d’écraser ou pas si c’est le cas, faire du « toujours écraser » en proposition avant, etc.
    Pour la BNF, si tes bibliothèques ne font pas d’Unimarc, pas la peine, Moccam (bien que rudimentaire) marchera.
    Si tes bibliothèques ont un accès Electre (cher), il y a possibilité d’avoir les notices dans différents encodage donc… mais c’est un autre sujet.
    D’ailleurs plutôt que de polluer ici, si tu veux tu ouvres une issue sur ton Gitlab 😉
    A toi de voir ce que tu veux faire 🙂

  18. Marco
    25/03/2016 à 13:00 | #18

    Merci pour toutes ces infos, j’ai ouvert un ticket sur GitLab tu as raison c’est mieux.

  19. Ned
    01/04/2016 à 17:55 | #19

    @Marco
    « tiens on a rentré tel livre de tel auteur » : ça signifie que tu veux historiser l’usage qu’on fait d’un livre (sorti/rentré) et non pas QUI fait cet usage. Donc je pense que ça n’a aucun impact vis à vis de la CNIL dans ce cas. Pas plus que d’abonner un utilisateur à une alerte de rentrée de livre, si celle-ci n’est une fois de plus pas historisée.

    Bien joué pour le renommage, j’avoue avoir chercher un peu d’autres noms de bibliothèques célèbres dans l’espoir de te faire des suggestions, mais je n’avais rien trouvé d’aussi chouette.

  20. Marco
    01/04/2016 à 18:09 | #20

    @Ned
    Merci ! Ceci dit j’ai eu des sueurs froides car je me suis dit que ça allait être un gros boulot de tout remplacer mais en fait non: la commande « sed » a été mon amie et sur le gitlab le changement d’un nom de projet se fait facilement.

  21. Gwen
    10/04/2016 à 10:20 | #21

    @Gilles
    La Norme simplifiée NS-009 de la CNIL précise que les données relatives aux lecteurs sont conservées au maximum 1 an et celles relatives à chaque prêt, 4 mois :
    https://www.cnil.fr/fr/declaration/ns-009-bibliotheques-mediatheques.
    L’existence du fichier des emprunteurs doit être déclaré à la CNIL. C’est très bien expliqué ici :
    https://mdo.cg60.fr/index.php?option=com_content&view=article&id=420&Itemid=185

  22. 10/04/2016 à 17:30 | #22

    @Gwen
    Merci, j’ai cherché un bout de temps de ce genre d’informations.
    « Les données enregistrées sont conservées pendant la durée d’utilisation du service de prêt ( la radiation intervient d’office dans un délai d’un an à compter de la date de fin du prêt précédent). Les informations concernant chaque prêt sont conservées jusqu’à la fin du quatrième mois suivant la restitution de l’objet du prêt. Au-delà de ce délai, les informations sont détruites. »
    Tant que le lecteur est adhérent de la bibliothèque, les données sont conservées sans limite.
    La limite intervient quand le lecteur n’est plus adhérent.
    Sur Koha, je ne crois pas qu’il y ait de limites.

  23. 11/04/2016 à 00:09 | #23

    Sur une des captures d’écran on voit : ISBN : 9782754003254
    Désolé mais ce n’ai pas du tout un ISBN mais un EAN…

  24. Marco
    12/04/2016 à 09:01 | #24

    Ok merci pour l’info !

  25. 12/04/2016 à 10:58 | #25

    @SD
    Dans le langage bibliothéconomique, l’EAN13 est un ISBN.

  26. Arfawii
    04/12/2016 à 01:56 | #26

    Encore disponible ?

  27. Marco
    05/12/2016 à 13:47 | #27

    Oui !

  28. henry
    22/09/2018 à 10:49 | #28

    Bonjour,
    J’ai installé Alessandria après pas mal de difficultés, en particulier faire en sorte que python 3.5 fonctionne sur ma machine (debian 9 stretch). Mon but est de l’utiliser pour gérer ma bibliothèque personnelle.
    J’aimerai savoir comment lancer alessandria au démarrage de la machine.
    j’ai mis alessandria dans /var/www/
    Merci pour votre aide
    Cordialement
    henry

  29. Marco
    22/09/2018 à 11:08 | #29

    Bonjour,
    Il n’existe pas (encore ?) de script pour lancer automatiquement Alessandria.
    Cependant ma première question est: est-ce que vous arrivez à lancer Alessandria manuellement ?

  30. henry
    22/09/2018 à 11:24 | #30

    Oui j’y arrive, j’ai même réussi à créer un utilisateur, et à entrer deux livres.
    Il semble que l’application fonctionne bien.
    Je trouve que le lancement est un peu lourd, puisqu’il faut que je lance l’application dans un terminal en mode superviseur:
    root@coco:/home/henry# /var/www/alessandria/kinnereth/manage.py runserver
    Performing system checks…

    System check identified some issues:

    WARNINGS:
    ?: (urls.W005) URL namespace ‘admin’ isn’t unique. You may not be able to reverse all URLs in this namespace

    System check identified 1 issue (0 silenced).
    September 22, 2018 – 10:20:55
    Django version 2.0.8, using settings ‘kinnereth.settings’
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.

    Cordialement
    Henry

  31. Marco
    22/09/2018 à 13:39 | #31

    Pourquoi en mode « superviseur » ? Si les droits sont bien mis, on doit pouvoir l’exécuter avec un autre utilisateur (c’est ce que je fais sur mon serveur).
    Sinon pour l’instant, il faut créer un script de lancement au démarrage avec cette commande (voir la doc de Debian à ce sujet).

  32. henry
    22/09/2018 à 17:31 | #32

    J’ai réussi à lancer alessandra au démarrage :
    menu xfce4: Application/Paramètres/session et démarrage puis démarrage automatique d’applications, ajouter : Nom : Alessandra, gksu /votre chemin pour le fichier/manage.py runserver
    Pour ubuntu cela devrait être : Préférences/Applications au démarrage puis idem ci dessus.

    par contre j’aimerais pouvoir accéder à alessandra depuis un autre poste de mon réseau local : que faut il faire.
    A tout hasard je joints le fichier modifié de la mise en œuvre d’alessandra (j’ai conscience que la manière dont j’y suis arrivé n’est sans doute pas très orthodoxe.
    mon fichier

  33. henry
    22/09/2018 à 17:33 | #33

    Comment changer les droits pour que ça fonctionne avec un utilisateur lambda ?

  34. Marco
    23/09/2018 à 07:14 | #34

    En ce qui me concerne j’ai créé un utilisateur Django, et en root je lui ai donné les droits.
    chown -R django:django nom_du_repertoire_alessandria

  35. Marco
    23/09/2018 à 09:46 | #35

    Il suffit de lancer Django de telle façon qu’il écoute sur toutes les adresses IP:

    ./manage.py runserver 0:8000

    par exemple.

    Une petite remarque: ne pas mettre des gros extraits de code dans les commentaires, cela pollue la page.

  36. henry
    24/09/2018 à 10:26 | #36

    J’ai mis en place la commande : manage.py runserver 0:8000 et voici ce que j’obtiens :
    DisallowedHost at /

    Message d’erreur

  37. Marco
    24/09/2018 à 11:21 | #37

    Tout d’abord comme indiqué précédemment, merci de ne pas mettre de code ou de longs messages d’erreur dans les commentaires, ça rend la page illisible. Utiliser un lien externe comme Framabin.
    En ce qui concerne le message d’erreur, si vous regardez bien, il est assez explicite:

    You may need to add ‘192.168.0.100’ to ALLOWED_HOSTS.

    Il se trouve dans settings.py et d’après cette page

    ALLOWED_HOSTS = ['*']

    devrait aussi fonctionner.

  38. henry
    24/09/2018 à 11:40 | #38

    Merci pour votre aide, j’ai mis ALLOWED_HOSTS = [‘*’] et ça fonctionne, mais la syntaxe ne semble pas évidente, notamment la présence des cotes (‘).
    J’ai essayé de passer le logiciel en français, mais n’y suis pas arrivé ?
    J’aimeris créer un lecteur ou emprunteur (reader), mais le formulaire exige que l’on renseigne le champ date de naissance : pourquoi l’exiger ?
    Quand on crée un livre à partir du code ISBN, le logiciel trouve bien le livre, mais ne renseigne pas automatiquement l’auteur et l’éditeur : que faut il faire pour y arriver ?
    Cordialement
    henry
    ps: j’ai mis un peu trop de texte dans certains de mesmessages, mais je ne sais pas faire autrement : quid de framabin ?

  39. Marco
    24/09/2018 à 12:44 | #39

    * La date de naissance est obligatoire car le logiciel est destiné aux bibliothèques municipales et ils s’en servent pour les stats.
    * Pour l’ISBN c’est un module Python qui rapatrie les informations. Elle date un peu et pour certains ISBN effectivement il y a peu d’informations.

  40. henry
    24/09/2018 à 14:40 | #40

    Quand j’essaie d’ajouter un lecteur voici ce que j’obtiens :
    https://framabin.org/p/?e4026a32b5017d46#uyqxS0yrZOTO3qFswjRSIeZPNt5Uc0Xdn8Fi1sMWhQs=
    Merci de votre aide
    Henry

  41. Marco
    24/09/2018 à 15:55 | #41

    Effectivement il s’agit d’un bug lorsqu’on insère le tout premier lecteur et il sera corrigé dans la prochaine version.
    En attendant ceci devrait fonctionner.

  42. henry
    24/09/2018 à 17:49 | #42

    Merci pour votre message, mais rien n’a changé :
    https://framabin.org/p/?53afc2cca48c8e09#lHyLqGSr+Yu2IkK1Cm5CCuE3M/hy6jwn3UmgVWbw/48=
    Henry

  43. henry
    24/09/2018 à 17:53 | #43

    Pour ce qui est de l’ISBN, après avoir entré le code, le formulaire affiche bien l’auteur et l’éditeur, et signale qu’ils n’existent pas : Il demande leur création ! Pourquoi ne créent ils pas automatiquement ?
    Henry

  44. Marco
    24/09/2018 à 18:00 | #44

    Vous êtes sûr que vous avez bien modifié ce fichier ?

    /usr/local/lib/python3.5/dist-packages/django_alessandria-0.98.6._.18_05_2018.11_20_18-py3.5.egg/alessandria/models.py
  45. henry
    24/09/2018 à 20:40 | #45

    Effectivement j’avais modifié le fichier /var/www/alessandria/alessandria/models.py
    Faut il que je revienne en arrière concernant ce fichier ?
    A présent j’ai réussi à créer un lecteur
    A quoi sert servent ces répertoires ?
    Henry

  46. Marco
    25/09/2018 à 05:12 | #46

    Ce que vous avez installé dans

    /var/www/

    sont les sources. Ensuite en exécutant le setup l’application est installée dans le répertoire

    /usr/local/lib/python3.5/dist-packages/

    et Django utilise ce répertoire pour exécuter l’application.

  1. 10/04/2016 à 09:33 | #1