Générer l’environnement avec populate

Lors de l’installation du site en local (via la commande setup), la commande populate est appelée.

Cette commande génère entièrement la base de données de développement. Elle se situe dans core/management/commands/populate.py.

Utilisations :

./manage.py setup # Génère la base de test
./manage.py setup --prod # Ne génère que le schéma de base et les données strictement nécessaires au fonctionnement

Les données générées du site dev

Par défaut, la base de données du site de prod contient des données nécessaires au fonctionnement du site comme les groupes (voir La liste des groupes réels), un utilisateur root, les clubs de base et quelques autres instances indispensables. En plus de ces données par défaut, la base de données du site de dev contient des données de test (fixtures) pour remplir le site et le rendre exploitable.

Voici les clubs générés pour le site de dev :

  • AE

    • Bibo’UT

    • Carte AE

    • Guy’UT

      • Woenzel’UT

    • Troll Penché

  • BdF

  • Laverie

Voici utilisateurs générés pour le site de dev :

Le mot de passe de tous les utilisateurs est plop.

  • root -> Dans le groupe Root et cotisant

  • skia -> responsable info AE et cotisant, barmen MDE

  • public -> utilisateur non cotisant et sans groupe

  • subscriber -> utilisateur cotisant et sans groupe

  • old_subscriber -> utilisateur anciennement cotisant et sans groupe

  • counter -> administrateur comptoir

  • comptable -> administrateur comptabilité

  • guy -> utilisateur non cotisant et sans groupe

  • rbatsbak -> utilisateur non cotisant et sans groupe

  • sli -> cotisant avec carte étudiante attachée au compte, barmen MDE

  • krophil -> cotisant avec des plein d’écocups, barmen foyer

  • comunity -> administrateur communication

  • tutu -> administrateur pédagogie

Ajouter des fixtures

Les fixtures sont contenus dans core/management/commands/populate.py après la ligne 205 : if not options["prod"]:.

Pour ajouter une fixtures, il faut :

  • importer la classe à instancier en début de fichier

  • créer un objet avec les attributs nécessaires en fin de fichier

  • enregistrer l’objet dans la base de données

# Exemple pour ajouter un utilisateur

# Importation de la classe
import core.models import User

# [...]

# Création de l'objet
jesus = User(
    username="jc",
    last_name="Jesus",
    first_name="Christ",
    email="son@god.cloud",
    date_of_birth="2020-24-12",
    is_superuser=False,
    is_staff=True,
)
jesus.set_password("plop")
# Enregistrement dans la base de donnée
jesus.save()