Ce script permet la synchronisation des données de l'annuaire LDAP avec Moodle. Il nécessite Python 3.5+.
- Python 3.5+
- Pipenv
Il est possible d'installer l'environnement de développement et d'executer le script sous windows, via le wrapper py
installé par défaut. Il est alors nécessaire de préfixer les commandes qui suivent par py -m
.
Les dépendances et l'environnement virtuel sont gérées par pipenv.
La commande suivante permet d'initialiser l'environnement et d'installer les dépendances.
pipenv install --dev --python=3.5
pipenv run python -m synchromoodle -c config/test.yml
pipenv run python setup.py clean build bdist bdist_wheel bdist_pex --pex-args="--disable-cache"
Les packages du script sont disponibles dans l'onglet Release du github.
Deux formats sont disponibles:
- PEX, pour une exécution autonome
- Wheel, pour une installation via pip sur un environnement Python existant.
Le fichier .pex
est un executable qui contient l'environnement virtuel, les dépendances et le script. Cela permet de
déployer le script sans avoir à se soucier de l'installation de Python.
./synchromoodle-x.x.x.pex -c config/test.yml
Le fichier .whl
peut être installé via pip sur un Python système ou dans un virtualenv.
Il est possible d'utiliser pyenv pour installer une version spécifique de Python sous Linux et créer un virtualenv pour le script.
pip3 install synchromoodle-x.x.x-py3-none-any.whl
python3 -m synchromoodle -c config/test.yml
usage: __main__.py [-h] [-v] [-c CONFIG]
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-c CONFIG, --config CONFIG
Chemin vers un fichier de configuration. Lorsque cette
option est utilisée plusieurs fois, les fichiers de
configuration sont alors fusionnés.
Le script fonctionne à l'aide d'un fichier de configuration au format YAML. Il est possible de spécifier plusieurs fichiers de configuration, en utilisant plusieurs fois le flag -c, les configuration de chaque fichier sont alors fusionnées.
La structure de la configuration est modélisée par les classes situées dans synchromoodle/config.py
Propriété | Description | Type |
---|---|---|
constantes | Constantes utilisées par le script | Dictionnaire |
database | Informations de connexion à la bdd | Dictionnaire |
ldap | Informations de connexion au LDAP | Dictionnaire |
logging | Configuration de logging (module standard logging, voir dictConfig) | Dictionnaire |
actions | Liste des actions a exécuter avec la configuration associée | Tableau |
delete | Informations pour la suppression de données | Dictionnaire |
webservice | Informations de connexion au webservice moodle | Dictionnaire |
Propriété | Description | Type |
---|---|---|
id | Identifiant de l'action (libre) | Chaine de caractères |
type | Type d'action à éxecuter (nom de la fonction dans actions.py ) |
Chaine de caractères |
timestamp_store | Informations du fichier de stockage des dates de dernières exécution | Dictionnaire |
etablissements | Informations générales sur les établissements | Dictionnaire |
inter_etablissements | Informations générales sur les inter-établissements | Dictionnaire |
inspecteurs | Informations générales sur les inspecteurs | Dictionnaire |
Propriété | Description | Valeur par défaut | Type |
---|---|---|---|
default_moodle_theme | Thèmes par défault pour les utilisateurs inter-etabs | "netocentre" | Chaine de caractères |
default_mail_display | Par défaut, les mails sont uniquement affichés aux participants du cours | 2 | Nombre entier |
default_mail | Email utilise lorsque les personnes n'ont pas d'email dans le LDAP | "non_renseigne@netocentre.fr" | Chaine de caractères |
default_domain | Domaine par défaut | "lycees.netocentre.fr" | Chaine de caractères |
id_instance_moodle | Id de l'instance concernant Moodle | 1 | Nombre entier |
niveau_ctx_categorie | Niveau de contexte pour une categorie | 40 | Nombre entier |
niveau_ctx_cours | Niveau de contexte pour un cours | 50 | Nombre entier |
niveau_ctx_forum | Niveau de contexte pour un forum | 70 | Nombre entier |
niveau_ctx_bloc | Niveau de contexte pour un bloc | 80 | Nombre entier |
id_role_admin | Id pour le role admin | 1 | Nombre entier |
id_role_createur_cours | Id pour le role createur de cours | 2 | Nombre entier |
id_role_proprietaire_cours | Id pour le role propriétaire de cours | 11 | Nombre entier |
id_role_enseignant | Id pour le role enseignant | 3 | Nombre entier |
id_role_eleve | Id pour le role eleve | 5 | Nombre entier |
id_role_inspecteur | Id pour le role inspecteur | 9 | Nombre entier |
id_role_directeur | Id pour le role directeur | 18 | Nombre entier |
id_role_utilisateur_limite | Id pour le role d'utilisateur avec droits limites | 14 | Nombre entier |
type_structure_cfa | Type de structure d'un CFA | "CFA" | Chaine de caractères |
type_structure_clg | Type de structure d'un college | "COLLEGE" | Chaine de caractères |
anonymous_phone | Valeur assignée aux numeros de telephones des utilisateurs anonymisés | "0606060606" | Chaine de caractères |
anonymous_name | Valeur assignée aux champs divers du profil des utilisateurs anonymisés | "Anonyme" | Chaine de caractères |
anonymous_mail | Adresse email assignée aux utilisateurs anonymisés | "Anonyme" | Chaine de caractères |
Propriété | Description | Valeur par défaut | Type |
---|---|---|---|
database | Nom de la base de données | "moodle" | Chaine de caractères |
user | Nom de l'utilisateur moodle | "moodle" | Chaine de caractères |
password | Mot de passe de l'utilisateur moodle | "moodle" | Chaine de caractères |
host | Adresse IP ou nom de domaine de la base de données | "192.168.1.100" | Chaine de caractères |
port | Port TCP | 9806 | Nombre entier |
entete | Entêtes des tables | "mdl_" | Chaine de caractères |
charset | Charset à utiliser pour la connexion | "utf8" | Chaine de caractères |
Propriété | Description | Valeur par défaut | Type |
---|---|---|---|
uri | URI du serveur LDAP | "ldap://192.168.1.100:9889" | Chaine de caractères |
username | Utilisateur | "cn=admin,ou=administrateurs,dc=esco-centre,dc=fr" | Chaine de caractères |
password | Mot de passe | "admin" | Chaine de caractères |
baseDN | DN de base | "dc=esco-centre,dc=fr" | Chaine de caractères |
structuresRDN | OU pour les structures | "ou=structures" | Chaine de caractères |
personnesRDN | OU pour les personnes | "ou=people" | Chaine de caractères |
groupsRDN | OU pour les groupes | "ou=groups" | Chaine de caractères |
adminRDN | OU pour les administrateurs | "ou=administrateurs" | Chaine de caractères |
Propriété | Description | Valeur par défaut | Type |
---|---|---|---|
ids_roles_teachers | Ids des roles considérés comme enseignants pour la suppression | [2] | Liste de Nombres entiers |
delay_anonymize_student | Délai, en jours, avant de anonymiser un élève qui n'est plus présent dans l'annuaire LDAP | 60 | Nombres entiers |
delay_delete_student | Délai, en jours, avant de supprimer un élève qui n'est plus présent dans l'annuaire LDAP | 90 | Nombres entiers |
delay_anonymize_teacher | Délai, en jours, avant d'anonymiser un enseignant qui n'est plus présent dans l'annuaire LDAP | 90 | Nombres entiers |
delay_delete_teacher | Délai, en jours, avant de supprimer un enseignant qui n'est plus présent dans l'annuaire LDAP | 365 | Nombres entiers |
delay_backup_course | Délai, en jours, avant de sauvegarder un cours inutilisé | 365 | Nombres entiers |
Propriété | Description | Valeur par défaut | Type |
---|---|---|---|
token | Token d'accès au webservice Moodle | "" | Chaine de caractères |
moodle_host | Host HTTP cible pour accéder au webservice Moodle SANS '/' FINAL | "" | Chaine de caractères |
backup_cmd | Commande à executer pour lancer la backup d'un cours | "php backup.php --courseid=%courseid% --destination=/MoodleBackups" | Chaine de caractères |
backup_success_re | Expression Reguliere à appliquer sur le retour de la sortie standard de backup_cmd pour vérifier le succès de l'opération | "Backup completed" | Chaine de caractères |
Propriété | Description | Valeur par défaut | Type |
---|---|---|---|
file | Fichier contenant les dates de traitement précedent pour les établissements | "timestamps.txt" | Chaine de caractères |
separator | Séparateur utilisé dans le fichier de traitement pour séparer l'etablissement des date de traitement précedent | "-" | Chaine de caractères |
Propriété | Description | Valeur par défaut | Type |
---|---|---|---|
etabRgp | Regroupement d'etablissements | [] | Liste de regroupements d'etablissements |
inter_etab_categorie_name | Nom de la catégorie inter-etablissement | "Catégorie Inter-Établissements" | Chaine de caractères |
inter_etab_categorie_name_cfa | Nom de la catégorie inter-etablissement pour les CFA | "Catégorie Inter-CFA" | Chaine de caractères |
listeEtab | Liste des établissements | [] | Liste de chaines de caractères |
listeEtabSansAdmin | Etablissements sans administrateurs | [] | Liste de chaines de caractères |
listeEtabSansMail | Etablissements dont le mail des professeurs n'est pas synchronise | [] | Liste de chaines de caractères |
prefixAdminMoodleLocal | Préfixe de l'attribut "isMemberOf" indiquant que l'utilisateur est un administrateur local de Moodle | "(esco|clg37):admin:Moodle:local:" | Chaine de caractères |
prefixAdminLocal | Prefix de l'attribut "isMemberOf" indiquant que l'utilisateur est un administrateur local | "(esco|clg37):admin:local:" | Chaine de caractères |
Propriété | Description | Valeur par défaut | Type |
---|---|---|---|
nom | Nom du regroupement d'etablissements | "" | Chaine de caractères |
uais | Liste des UAI constituant le regroupement | [] | Liste de chaines de caractères |
Propriété | Description | Valeur par défaut | Type |
---|---|---|---|
cohorts | Cohortes à synchroniser | {} | Dictionnaire |
categorie_name | Nom de la catégorie inter-etablissement | "%%Cat%%gorie inter%%tablissements" | Chaine de caractères |
ldap_attribut_user | Attribut utilisé pour determiner les utilisateurs inter-établissement | "isMemberOf" | Chaine de caractères |
ldap_valeur_attribut_user | Valeurs possibles de l'attribut pour déterminer si l'utilisateur est un utilisateur inter-établissement | ["cfa:Applications:Espace_Moodle:Inter_etablissements"] | Liste de chaines de caractères |
ldap_valeur_attribut_admin | Utilisateurs administrateurs de la section inter-etablissement | "cfa:admin:Moodle:local:Inter_etablissements" | Chaine de caractères |
cle_timestamp | Clé pour stocker le timestamp du dernier traitement inter-etablissements | "INTER_ETAB" | Chaine de caractères |
Propriété | Description | Valeur par défaut | Type |
---|---|---|---|
ldap_attribut_user | Attribut utilisé pour determiner les inspecteurs | "ESCOPersonProfils" | Chaine de caractères |
ldap_valeur_attribut_user | Valeur de l'attribute pour déterminer les inspecteurs | ["INS"] | Liste de chaines de caractères |
cle_timestamp | Clé pour stocker le timestamp du dernier traitement inter-etablissements | "INSPECTEURS" | Chaine de caractères |