https://github.com/gip-recia/escosynchromoodle
Scripts Python de synchronisation de Moodle depuis annuaire ENT
https://github.com/gip-recia/escosynchromoodle
moodle
Last synced: 3 months ago
JSON representation
Scripts Python de synchronisation de Moodle depuis annuaire ENT
- Host: GitHub
- URL: https://github.com/gip-recia/escosynchromoodle
- Owner: GIP-RECIA
- Created: 2018-05-28T13:28:09.000Z (about 7 years ago)
- Default Branch: develop
- Last Pushed: 2023-10-05T14:35:57.000Z (over 1 year ago)
- Last Synced: 2025-01-13T07:11:50.657Z (5 months ago)
- Topics: moodle
- Language: Python
- Homepage:
- Size: 31.3 MB
- Stars: 0
- Watchers: 6
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ESCOSynchroMoodle
[](https://travis-ci.org/GIP-RECIA/ESCOSynchroMoodle)
[](https://coveralls.io/github/GIP-RECIA/ESCOSynchroMoodle)Ce script permet la synchronisation des données de l'annuaire LDAP avec Moodle. Il nécessite Python 3.5+.
# Environnement de développement
### Prérequis
- Python 3.5+
- [Pipenv](https://github.com/pypa/pipenv)##### Note sous windows
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`.### Initialiser l'environnement virtuel et les dépendances
Les dépendances et l'environnement virtuel sont gérées par [pipenv](https://github.com/pypa/pipenv).
La commande suivante permet d'initialiser l'environnement et d'installer les dépendances.
```bash
pipenv install --dev --python=3.5
```### Executer le script à partir des sources
```bash
pipenv run python -m synchromoodle -c config/test.yml
```## Construire les binaires à partir des sources
```bash
pipenv run python setup.py clean build bdist bdist_wheel bdist_pex --pex-args="--disable-cache"
```# Déploiement et exécution
Les packages du script sont disponibles dans l'onglet
[Release du github](https://github.com/GIP-RECIA/ESCOSynchroMoodle/releases).Deux formats sont disponibles:
- PEX, pour une exécution autonome
- Wheel, pour une installation via pip sur un environnement Python existant.## PEX
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
```## Wheel
Le fichier `.whl` peut être installé via pip sur un Python système ou dans un virtualenv.
Il est possible d'utiliser [pyenv](https://github.com/pyenv/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
```bash
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.
```# Configuration YAML
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](./synchromoodle/config.py)#### Propriétés
| 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 |#### actions
| 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 |###### constantes
| 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 | "[email protected]" | 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 |###### database
| 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 |###### ldap
| 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 |###### delete
| 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 |###### webservice
| 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 |###### timestamp_store
| 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 |###### etablissements
| 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 |###### Regroupement d'etablissements
| 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 |###### inter_etablissements
| 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 |###### inspecteurs
| 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 |#### Exemple de configuration
[config/exemple.yml](./config/exemple.yml)