Projet de Système Gestion des abonnés d'une implantations AUF (CNF/CAI)

TableOfContents

Objectifs du projet

Lire aussi la sous-page sur l'[:/Besoins: expression des besoins] qui présente quelques autres aspects. Ajoutez-y vos demandes.

Le quotidien du projet

Idées générales

Le système se décompose en trois parties :

Une base de données
elle décrit l'ensemble des utilisateurs et des abonnements associés. Elle doit avoir un schéma de base simple, correspondant au noyau dur du système, mais également autoriser une intégration simple de modules d'extension.
Un moteur de gestion
de quoi remplir et gérer cette base de données, notamment :
  1. une interface Web, rapide et ergonomique
  2. une interface en ligne de commande pour permettre une gestion « système »
  • Cette application sera adaptable en fonction des contraintes locales. Par exemple elle sera capable, via des extensions, de synchroniser les données avec d'autres systèmes (authentification, messagerie, etc.).
  • Des modules d'extension
    tout ce qu'il faut pour s'adapter aux besoins locaux, pas exemple :
    1. pour l'intégration au niveau du système d'exploitation :
      1. synchronisation des informations vers le système d'authentification local, par exemple :
        1. vers les fichiers /etc/passwd et /etc/shadow, pour un système avec ou sans NIS

        2. vers une base de données MySQL d'authentification
      2. synchronisation des informations vers le système de messagerie local, par exemple :
        1. extraction des informations vers les fichiers /etc/aliases, /etc/postfix/virtual, etc, pour la messagerie

        2. une base de données MySQL pour la messagerie
      3. synchronisation des informations vers un annuaire LDAP
      4. etc. : tout autre système actuellement utilisé pour la gestion des services utilisateurs
    2. pour la gestion de fonctionnalités additionnelles :
      1. saisie, suivi et statistiques sur les commandes de documents primaires
      2. gestion de la caisse, via une gestion de reçus et un état de caisse mensuel
    3. attachement d'informations diverses et variées autour des utilisateurs :
      1. leurs commandes, leurs emprunts, leurs dates d'anniversaire, leurs passions, ... enfin tout ce qui n'est pas interdit au nom du respect de la vie privée, c'est à dire finalement plus grand chose.
    Parfois avec un schéma on voit mieux
    attachment:gestion-utilisateurs-campus.png

    (source de ce schéma : attachment:gestion-utilisateurs-campus.dia)

    Description plus détaillée

    Schéma de la base de données

    Voir /SchemaBase

    Le logiciel de gestion de la base

    En utilisant un système comme Django, on simplifie la programmation (validation des données, interfaçages). Une fois l'ensemble des fonctions de gestion définies (l'API), elle est disponible directement via Python, on peut donc l'utiliser dans de nombreux cas : outils en ligne de commande, scripts, cron, etc.

    L'idée est donc d'avoir un système Django/Python qui proposera toute l'API de gestion. Ensuite au niveau des applications on n'aura qu'à appeler l'API, sans jamais accéder directement à la base de données (pas de requête SQL directe).

    Définition de l'API

    L'API est l'ensemble des fonctions qui vont permettre de faire toutes les opérations nécessaires sur la base de données. Par exemple (non-contractuel) :

    <!> Il faut donc définir l'ensemble des fonctions.

    Extensions

    Les fonctions du moteur de base seront extensibles afin d'être adaptées aux conditions locales. Exemple d'extension possibles :

    Un ensemble d'extensions sera proposé par défaut recouvrant le maximum de besoins. Chaque extension disposera d'un fichier de configuration de base.

    Chaque extension proposera aussi de gérer des champs extras sur les tables.

    Voir sur le [http://trac.sn.auf.org/guia serveur trac] la branche d'Ousmane pour avoir une idée de la programmation Python/Django de tout cela.

    Les systèmes d'extraction

    À partir d'un système comme Django, on peut extraire les données assez facilement via des templates. Pour la plupart des extractions il ne sera pas nécessaire à l'administrateur système de savoir programmer en Python.

    Chaque système d'extraction disposera d'un fichier de configuration par défaut. Par exemple pour un système qui générera le fichier /etc/passwd via une extraction, on indiquera le shell par défaut. Ce shell par défaut pourra être éventuellement écrasé pour tel ou tel utilisateur s'il existe des informations spécifiques pour cet utilisateur (voir plus loin la notion de champ extra dans la base de donnée).

    Calendrier

    Voir la sous-page ["/Calendrier"]