Documentation sur le logiciel SYMPA

Ceci est une ancienne révision du document !


SYMPA : famille

Une famille permet de générer plusieurs listes en une seule fois

http://www.sympa.org/manual/list-creation#list_families

Création

1 - création d'une nouvelle famille

# cd ~sympa/etc/inpg.fr/families
# mkdir <nouvelle-famille>
# chown sympa:sympa <nouvelle-famille>

Dans le dossier <nouvelle-famille> copier les fichiers

  • config.tt2 (copier celui du modèle de liste désiré sous ~sympa/etc/create_list_templates et modifier si besoin )
  • param_constraint.conf
## No specific constraints on this list
  • edit_list.conf que dans le cas où l'on veut des autorisations différentes pour les propriétaires

2 - création d'un script perl générant les fichiers xml des listes d'une famille

Sous /usr/local/SCRIPTS/sympa/FAMILLE

Exemple : families-creation_labo-dir.pl

#!/usr/bin/perl -w
#
#  families-creation_<.......>.pl
#
# Catherine.Balleydier@inpg.fr
#
# maj : 07/03/08
#
########################################################################
# 
#  creation de famille de listes
#
########################################################################
#
 
$REP = "/usr/local/SCRIPTS/sympa/FAMILLE/families/";
 
#
# categorie principale dans topics.conf
# 
$categorie = "composantes" ;
 
#
#  LABO : "<nom de l'entite>"  , "<correspondance dans topics.conf">
#
%LABOS = (
        "ENSEEG"        , "Enseeg" ,
        "ENSERG"        , "Enserg" ,
        ) ;
#
#  proprietaires des listes
#
@OWNERS = (
        "catherine.balleydier\@inpg.fr" ,
        "john.smith\@inpg.fr" ,
        ) ;
#
#   FONCTIONS : "<fonction apparaissant dans le nom de la liste>" ,
#               "<texte pour les champs objet et description">
#
%FONCTIONS = (
        "ressources-humaines"   , "ressources humaines" ,
        "finances"              , "services financier"
        );
 
$family = "ecole-rh.xml" ;
$FAMIL = "$REP"."$family" ;
 
open (FICH, ">$FAMIL") || die "Cannot open fichier: $!";
 
print FICH "<?xml version=\"1.0\" ?>\n" ;
print FICH "<family>\n" ;
 
#
#  script shell pour fermer l'espace documentaire
#
$FERM = "$REP"."fermer-esp-doc.sh" ;
open (PART, ">$FERM") || die "Cannot open fichier: $!";
print PART "#!/bin/sh\n" ;
 
 
foreach $Fonction (keys %FONCTIONS)
{
foreach $labo (keys %LABOS)
{
# nom en minuscule 
  $labomin = lc("$labo") ;
#
  $description = "Joindre les "."$FONCTIONS{$Fonction}"." "."$labo" ;
  $NomListe = "$labomin"."."."$Fonction" ;
  print FICH "  <list>\n" ;
  print FICH "    <listname>"."$NomListe"."</listname>\n" ;
  print FICH "    <topics>"."$categorie"."/"."$LABOS{$labo}"."</topics>\n" ;
  print FICH "    <subject>"."$description"."</subject>\n" ;
  print FICH "    <description>"."$description"."</description>\n" ;
  print FICH "    <status>open</status>\n" ;
  print FICH "    <shared_edit>editor</shared_edit>\n" ;
  print FICH "    <shared_read>private</shared_read>\n" ;
  print FICH "    <language>fr</language>\n" ;
 
  foreach $owner (@OWNERS)
  {
    print FICH "    <owner multiple=\"1\">\n" ;
    print FICH "      <email>"."$owner"."</email>\n" ;
    print FICH "      <profile>normal</profile>\n" ;
    print FICH "    </owner>\n" ;
  }
  print FICH "  </list>\n";
  $AdrList = "/home/sympa/expl/inpg.fr/"."$NomListe" ;
  print PART "mv "."$AdrList"."/shared "."$AdrList"."/pending.shared \n";
}
}
print FICH "</family>\n";
 
close FICH ;
close PART ;
chmod (0700 , "$FERM" , "/a") ;
 

Lancement du script qui crée un fichier xml dans le répertoire /usr/local/SCRIPTS/sympa/FAMILLE/families

# /usr/local/SCRIPTS/sympa/FAMILLE/families-creation_labo-dir.pl

3 - Génération des listes

#  ~sympa/bin/sympa.pl  --instantiate_family  laboratoire-directeur   --robot  listes.grenoble-inp.fr 
                 --input_file  /usr/local/SCRIPTS/sympa/FAMILLE/families/laboratoires-directeurs.xml

Puis effacement de l'espace documentaire

#  /usr/local/SCRIPTS/sympa/FAMILLE/families/fermer-esp-doc.sh

Modification des paramètres d'une famille de liste

Modifier le script /usr/local/SCRIPTS/sympa/FAMILLE/families-creation_labo-dir.pl et l'éxécuter

# /usr/local/SCRIPTS/sympa/FAMILLE/families-creation_labo-dir.pl

Puis relancer l'instantiation de la famille

#  ~sympa/bin/sympa.pl  --instantiate_family  laboratoire-directeur   --robot  inpg.fr 
                 --input_file  /usr/local/SCRIPTS/sympa/FAMILLE/families/laboratoires-directeurs.xml

Suppression d'une famille

#  ~sympa/bin/sympa.pl --close_family enseignants --robot inpg.fr 
#  rm -f ~sympa/etc/inpg.fr/families/enseignants/*.xml

Ajout d'une liste à une famille

#  ~sympa/bin/sympa.pl  --add_list  laboratoire-directeur   --robot  inpg.fr 
                 --input_file  /usr/local/SCRIPTS/sympa/FAMILLE/families/laboratoires-directeurs-2.xml

Suppression d'une liste à une famille

Suppression de la liste biologie.directeur@inpg.fr

#  ~sympa/bin/sympa.pl  --close_list  biologie.directeur@inpg.fr 

Modification d'une liste appartenant à une famille

#  ~sympa/bin/sympa.pl  --modify_list  laboratoire-directeur   --robot  inpg.fr 
                 --input_file  /usr/local/SCRIPTS/sympa/FAMILLE/families/laboratoires-directeurs-3.xml