Accéder au contenu.
Menu Sympa

fr - Re: [sympa-fr] Utilisation des data sources pour les abonnés

Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa

Archives de la liste

Chronologique Discussions  
  • From: David Verdin <adresse@cachée>
  • To: Raphaël RIGNIER <adresse@cachée>
  • Cc: adresse@cachée
  • Subject: Re: [sympa-fr] Utilisation des data sources pour les abonnés
  • Date: Tue, 19 Jan 2010 13:14:09 +0100

Bonjour, et désolé de cette réponse tardive,

Voici un splendide cas d'école pour les familles de listes !
Une famille de listes est un groupe de listes partageant une config de base commune, mais différent légèrement, sur un ensemble de paramètres.
Par exemple : toutes les config sont identiques, mais les requêtes utilisées pour récupérer les listes d'abonnés sont différentes. Hein ? Voilà-t-y pas qu'on serait dans ce cas là ? :-P

Le principe en gros : en règle générale, la différence essentielle entre deux listes, c'est leur config. On crée donc automatiquement les configurations à partir d'un modèle (config.tt2) dans lequel on insère des données issues d'un fichier XML. Sympa crée les listes automatiquement à partir de tout ça. Vous trouverez tous les détails supplémentaires dans la doc complète sur le site de Sympa : https://www.sympa.org/manual/list-families

Allez, je fais un petit howto au passage : Comment créer une famille de listes.

(note  : je vais mettre des chemins correspondant aux chemins par défaut de Sympa, ils peuvent différer dans votre installation)

Pour créer une famille de listes, il vous faut :

- Un Sympa installé d'une version supérieure ou égale à 5.0
- Un accès au système de fichier du serveur Sympa (on n'a pas encore intégré ça dans l'interface web, mais ça va venir)
- Un éditeur de texte (sans blagues...)

1- Rendez-vous dans le répertoire de données de votre serveur :
    ♯ cd /home/sympa/etc/

2- s'il n'existe pas, créez le répertoire de familles
    # mkdir families

3- donnez ce répertoire à l'usager, vérifiez qu'il a bien tous les droits dessus :
    # chown sympa:sympa families
    # ls -al families
    drwxr-x---  4 sympa sympa 4096 jui 28 16:03 families

4- La création de votre famille commence ! Créez une répertoire portant le nom de votre famille :
    # mkdir ma_famille
    # chown sympa:sympa ma_famille
    # chmod u+xrw ma_famille/
    # chmod g+x ma_famille/

5- Créez votre fichier config.tt2 :
    # cd ma_famille/
    #emacs config.tt2

DANS LE CAS DES LISTES DE RAPHAËL (vu que c'est lui qui a posé la question, autant lui filer un gros coup de pouce),  ce fichier aurait sans doute la structure ci-dessous.
Cette structure est très basique mais devrait suffire pour créer les listes. Dans la doc de Sympa, vous trouverez tous la raffinements possibles. Il y en a.
Enfin, je suppose que les paramètres de connexion à la base de données (nom de la base, password, etc.) sont les mêmes pour toutes les listes. Si ce n'est pas le cas, il faut en faire des paramètres dans le fichier XML.

# Définition des requêtes utilisables, une et une seule fois
[% SET requete1="SELECT ..." %]
[% SET requete2="SELECT ..." %]
[% SET requete3="SELECT ..." %]
[% SET requete4="SELECT ..." %]

  subject [% subject %]

  owner_include
  source [% ownerfile %]
  reception nomail
  profile privileged

[% FOREACH s=source %]
  include_sql_query
    db_type <type de BD>
    host <nom d'hôte>
    user <nom d'utilisateur>
    passwd <mot de passe>
    db_name <nom de la base>
    sql_query [% IF s == 1 %][% requete1 %][% ELSIF s == 2 %][% requete2 %][% ELSIF s==3 %][% requete3 %][% END %]

[% END %]
Attention à ne pas sauter dans ligne dans le bloc "sql_query [% IF s == 1 %][% requete1 %][% ELSIF s == 2 %][% requete2 %][% ELSIF s==3 %][% requete3 %][% END %]" ! Cela rendrait le paragraphe "include_sql_query" invalide !

6- Créez le fichier XML contenant les données des listes
    # emacs donnees_ma_famille.xml

Voici un exemple de fichier XML correspondant au mail d'origine de cette discussion.
On suppose ici que le fichier /home/sympa/etc/data_sources/sourceProprios1.incl contient les données nécessaire à l'importation des propriétaires, c'est-à-dire une paragraphe "include_sql_query" valide.
<?xml version="1.0" ?>
  <family>
    <list>
      <listname>liste1</listname>
      <subject>Le sujet de la liste 1</subject>
      <ownerfile>sourceProprios1</ownerfile>
      <source multiple="1">2</source>
      <source multiple="1">3</source>
    </list>
    <list>
      <listname>liste2</listname>
      <subject>Le sujet de la liste 2</subject>
      <ownerfile>sourceProprios1</ownerfile>
      <source multiple="1">3</source>
      <source multiple="1">4</source>
    </list>
  </family>
7- Instancier la famille :
    # /home/sympa/bin/sympa.pl --instantiate_family ma_famille --input_file /home/sympa/etc/families/ma_famille/donnees_ma_famille.xml

Là, vous devez avoir Une sortie du type :

err Family::_load_param_constraint_conf() No file /home/sympa/etc/families/ma_famille/param_constraint.conf. Assuming no constraints to apply.

******************************************************************************
******************** INSTANTIATION of ma_famille FAMILY ********************
******************************************************************************

These lists have been updated and aliases are ok :
  liste1,liste2

L'erreur est normale (mais pas grave) parce que je ne vous ai pas fait créer de fichier "param_constraint.conf". Ce fichier peut définir les limites suivant lesquelles une config de liste peut être modifiée.

En effet, toute liste créée à partir d'une famille peut être ensuite modifiée comme une liste normale. Les modifications ne seront pas perdues si on réinstantie la famille plus tard. En revanche, on peut contraindre la famille pour empĉher de positionner certaines valeurs pour certains paramètres. Mais pour tout cela, je vous renvoie à la doc de Sympa. du point de vue de ce petit tuto, c'est terminé !

À plus tard !

David Verdin


Le 13/01/2010 11:31, Raphaël RIGNIER a écrit :
adresse@cachée">David Prévot a écrit :
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12/01/2010 12:32, Raphaël RIGNIER wrote:
 
Bonjour la liste,
   

Bonjour,
 
Bonjour,
 
Dans une base MySQL j'ai déjà une liste de tous les utilisateurs de
   
[...]
 
Bien sûr, cf. include_file [0], mais tu peux aussi adapter directement
tes requêtes...

[0] https://www.sympa.org/manual/parameters-data-sources#include_file
 
En fait dans mon fichier .incl j'ai la requete SQL pas le résultat de la requête.

Dans mon fichier test.incl
------------------------
include_sql_query
db_type mysql
host mysql
user consultuser
passwd *******
db_name userdb
sql_query SELECT mail from ......
-------------------------------------
Dans ma config de liste :
include_file  /etc/sympa/data_sources/test.incl
--------------------------------------
syslog :
List::_include_users_file() Not an email address: sql_query SELECT mail from .....

J'avais pour but d'utiliser un ensembles de requetes prédéfinies pour gérer à la fois des owner,editor et subscribers pour mes listes.

Exemple :
- liste1 :
   - editor = requete1
   - subscriber = requete2 + requete3
- liste2 :
   - editor = requete1
   - subscribers = requete3 + requete4
....
Ici la requete3 est récurrente. Ce qui obligerait à écrire 2 fois la même requête, ou une autre requête qui regroupe les 2 (pas toujours possible). Je suis peut être trop fainéant :-/

C'est possible ?


Amicalement

David

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAktMtw0ACgkQ18/WetbTC/rRYACeLEsCkz8QwE6iGUQnKGs06nCo
G3wAoJt8g1BJuVUVKtx6WCrkRtkfcOVX
=unhu
-----END PGP SIGNATURE-----
 

Raphaël

-- 
David Verdin
Comité réseau des universités



Archives gérées par MHonArc 2.6.19+.

Haut de le page