forked from DGNum/gestioCOF
Merge branch 'Kerl/fix_dev_data' into 'master'
Kerl/fix dev data Les données de développement sont désormais réparties entre deux fixtures et un commande django-admin. - Fixtures - `gestion` : sondages, événéments, matières de petits cours et deux demandes de petits cours. - `sites` : le site pour l'application `sites`. - La commande `loaddevdata` : elle se découpe en deux parties. - La première dont le code est dans `gestioncof/management/commands/loaddevdata.py` charge les utilisateurs dans la base de données et les inscrits aux petits cours. Si l'argument `--no-root` est passé, l'utilisateur privilégié `root` n'est pas créé. - La deuxième, `loadbdadevdata` est appelée par la première. Elle instancie deux tirages et y inscrit tous les utilisateurs puis lance le premier tirage. Comme on peut le constater dans `provisioning/prepare_django.sh`, les commandes à appeler pour setup l'environnement de dev sont python manage.py loaddata gestion sites python manage.py loaddevdata Pour augmenter la liste des données à importer, compléter les fichiers contenus dans `{gestioncof,bda}/management/data/` See merge request !160
This commit is contained in:
commit
217624fe08
14 changed files with 1455 additions and 14238 deletions
|
@ -172,9 +172,10 @@ Il ne vous reste plus qu'à initialiser les modèles de Django avec la commande
|
|||
python manage.py migrate
|
||||
|
||||
|
||||
Une base de donnée pré-remplie est disponible en lançant la commande :
|
||||
Une base de donnée pré-remplie est disponible en lançant les commandes :
|
||||
|
||||
python manage.py loaddata users root bda gestion sites accounts groups articles
|
||||
python manage.py loaddata gestion sites accounts groups articles
|
||||
python manage.py loaddevdata
|
||||
|
||||
Vous êtes prêts à développer ! Lancer GestioCOF en faisant
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
107
bda/management/commands/loadbdadevdata.py
Normal file
107
bda/management/commands/loadbdadevdata.py
Normal file
|
@ -0,0 +1,107 @@
|
|||
"""
|
||||
Crée deux tirages de test et y inscrit les utilisateurs
|
||||
"""
|
||||
|
||||
import os
|
||||
import random
|
||||
|
||||
from django.utils import timezone
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from gestioncof.management.base import MyBaseCommand
|
||||
from bda.models import Tirage, Spectacle, Salle, Participant, ChoixSpectacle
|
||||
from bda.views import do_tirage
|
||||
|
||||
|
||||
# Où sont stockés les fichiers json
|
||||
DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)),
|
||||
'data')
|
||||
|
||||
|
||||
class Command(MyBaseCommand):
|
||||
help = "Crée deux tirages de test et y inscrit les utilisateurs."
|
||||
|
||||
def handle(self, *args, **options):
|
||||
# ---
|
||||
# Tirages
|
||||
# ---
|
||||
|
||||
Tirage.objects.all().delete()
|
||||
Tirage.objects.bulk_create([
|
||||
Tirage(
|
||||
title="Tirage de test 1",
|
||||
ouverture=timezone.now()-timezone.timedelta(days=7),
|
||||
fermeture=timezone.now(),
|
||||
active=True
|
||||
),
|
||||
Tirage(
|
||||
title="Tirage de test 2",
|
||||
ouverture=timezone.now(),
|
||||
fermeture=timezone.now()+timezone.timedelta(days=60),
|
||||
active=True
|
||||
)
|
||||
])
|
||||
tirages = Tirage.objects.all()
|
||||
|
||||
# ---
|
||||
# Salles
|
||||
# ---
|
||||
|
||||
locations = self.from_json('locations.json', DATA_DIR, Salle)
|
||||
|
||||
# ---
|
||||
# Spectacles
|
||||
# ---
|
||||
|
||||
def show_callback(show):
|
||||
"""
|
||||
Assigne un tirage, une date et un lieu à un spectacle et décide si
|
||||
les places sont sur listing.
|
||||
"""
|
||||
show.tirage = random.choice(tirages)
|
||||
show.listing = bool(random.randint(0, 1))
|
||||
show.date = (
|
||||
show.tirage.fermeture
|
||||
+ timezone.timedelta(days=random.randint(60, 90))
|
||||
)
|
||||
show.location = random.choice(locations)
|
||||
return show
|
||||
shows = self.from_json(
|
||||
'shows.json', DATA_DIR, Spectacle, show_callback
|
||||
)
|
||||
|
||||
# ---
|
||||
# Inscriptions
|
||||
# ---
|
||||
|
||||
self.stdout.write("Inscription des utilisateurs aux tirages")
|
||||
ChoixSpectacle.objects.all().delete()
|
||||
choices = []
|
||||
for user in User.objects.filter(profile__is_cof=True):
|
||||
for tirage in tirages:
|
||||
part, _ = Participant.objects.get_or_create(
|
||||
user=user,
|
||||
tirage=tirage
|
||||
)
|
||||
shows = random.sample(
|
||||
list(tirage.spectacle_set.all()),
|
||||
tirage.spectacle_set.count() // 2
|
||||
)
|
||||
for (rank, show) in enumerate(shows):
|
||||
choices.append(ChoixSpectacle(
|
||||
participant=part,
|
||||
spectacle=show,
|
||||
priority=rank + 1,
|
||||
double_choice=random.choice(
|
||||
['1', 'double', 'autoquit']
|
||||
)
|
||||
))
|
||||
ChoixSpectacle.objects.bulk_create(choices)
|
||||
self.stdout.write("- {:d} inscriptions générées".format(len(choices)))
|
||||
|
||||
# ---
|
||||
# On lance le premier tirage
|
||||
# ---
|
||||
|
||||
self.stdout.write("Lancement du premier tirage")
|
||||
do_tirage(tirages[0], "dummy_token")
|
26
bda/management/data/locations.json
Normal file
26
bda/management/data/locations.json
Normal file
|
@ -0,0 +1,26 @@
|
|||
[
|
||||
{
|
||||
"name": "Cour\u00f4",
|
||||
"address": "45 rue d'Ulm, cour\u00f4"
|
||||
},
|
||||
{
|
||||
"name": "K-F\u00eat",
|
||||
"address": "45 rue d'Ulm, escalier C, niveau -1"
|
||||
},
|
||||
{
|
||||
"name": "Th\u00e9\u00e2tre",
|
||||
"address": "45 rue d'Ulm, escalier C, niveau -1"
|
||||
},
|
||||
{
|
||||
"name": "Cours Pasteur",
|
||||
"address": "45 rue d'Ulm, cours pasteur"
|
||||
},
|
||||
{
|
||||
"name": "Salle des actes",
|
||||
"address": "45 rue d'Ulm, escalier A, niveau 1"
|
||||
},
|
||||
{
|
||||
"name": "Amphi Rataud",
|
||||
"address": "45 rue d'Ulm, NIR, niveau PB"
|
||||
}
|
||||
]
|
100
bda/management/data/shows.json
Normal file
100
bda/management/data/shows.json
Normal file
|
@ -0,0 +1,100 @@
|
|||
[
|
||||
{
|
||||
"description": "Jazz / Funk",
|
||||
"title": "Un super concert",
|
||||
"price": 10.0,
|
||||
"slots_description": "Debout",
|
||||
"slots": 5
|
||||
},
|
||||
{
|
||||
"description": "Homemade",
|
||||
"title": "Une super pi\u00e8ce",
|
||||
"price": 10.0,
|
||||
"slots_description": "Assises",
|
||||
"slots": 60
|
||||
},
|
||||
{
|
||||
"description": "Plein air, soleil, bonne musique",
|
||||
"title": "Concert pour la f\u00eate de la musique",
|
||||
"price": 5.0,
|
||||
"slots_description": "Debout, attention \u00e0 la fontaine",
|
||||
"slots": 30
|
||||
},
|
||||
{
|
||||
"description": "Sous le regard s\u00e9v\u00e8re de Louis Pasteur",
|
||||
"title": "Op\u00e9ra sans d\u00e9cors",
|
||||
"price": 5.0,
|
||||
"slots_description": "Assis sur l'herbe",
|
||||
"slots": 20
|
||||
},
|
||||
{
|
||||
"description": "Buffet \u00e0 la fin",
|
||||
"title": "Concert Trouv\u00e8re",
|
||||
"price": 20.0,
|
||||
"slots_description": "Assises",
|
||||
"slots": 15
|
||||
},
|
||||
{
|
||||
"description": "Vive les maths",
|
||||
"title": "Dessin \u00e0 la craie sur tableau noir",
|
||||
"price": 10.0,
|
||||
"slots_description": "Assises, tablette pour prendre des notes",
|
||||
"slots": 30
|
||||
},
|
||||
{
|
||||
"description": "Une pi\u00e8ce \u00e0 un personnage",
|
||||
"title": "D\u00e9cors, d\u00e9montage en musique",
|
||||
"price": 0.0,
|
||||
"slots_description": "Assises",
|
||||
"slots": 20
|
||||
},
|
||||
{
|
||||
"description": "Annulera, annulera pas\u00a0?",
|
||||
"title": "La Nuit",
|
||||
"price": 27.0,
|
||||
"slots_description": "",
|
||||
"slots": 1000
|
||||
},
|
||||
{
|
||||
"description": "Le boum fait sa carte blanche",
|
||||
"title": "Turbomix",
|
||||
"price": 10.0,
|
||||
"slots_description": "Debout les mains en l'air",
|
||||
"slots": 20
|
||||
},
|
||||
{
|
||||
"description": "Unique repr\u00e9sentation",
|
||||
"title": "Carinettes et trombone",
|
||||
"price": 15.0,
|
||||
"slots_description": "Chaises ikea",
|
||||
"slots": 10
|
||||
},
|
||||
{
|
||||
"description": "Suivi d'une jam session",
|
||||
"title": "Percussion sur rondins",
|
||||
"price": 5.0,
|
||||
"slots_description": "B\u00fbches",
|
||||
"slots": 14
|
||||
},
|
||||
{
|
||||
"description": "\u00c9preuve sportive et artistique",
|
||||
"title": "Bassin aux ernests, nage libre",
|
||||
"price": 5.0,
|
||||
"slots_description": "Humides",
|
||||
"slots": 10
|
||||
},
|
||||
{
|
||||
"description": "Sonore",
|
||||
"title": "Chant du barde",
|
||||
"price": 13.0,
|
||||
"slots_description": "Ne venez pas",
|
||||
"slots": 20
|
||||
},
|
||||
{
|
||||
"description": "Cocorico",
|
||||
"title": "Chant du coq",
|
||||
"price": 4.0,
|
||||
"slots_description": "bancs",
|
||||
"slots": 15
|
||||
}
|
||||
]
|
152
bda/views.py
152
bda/views.py
|
@ -179,79 +179,96 @@ def inscription(request, tirage_id):
|
|||
"stateerror": stateerror})
|
||||
|
||||
|
||||
def do_tirage(request, tirage_id):
|
||||
tirage_elt = get_object_or_404(Tirage, id=tirage_id)
|
||||
form = TokenForm(request.POST)
|
||||
if not form.is_valid():
|
||||
return tirage(request, tirage_id)
|
||||
def do_tirage(tirage_elt, token):
|
||||
"""
|
||||
Fonction auxiliaire à la vue ``tirage`` qui lance effectivement le tirage
|
||||
après qu'on a vérifié que c'est légitime et que le token donné en argument
|
||||
est correct.
|
||||
Rend les résultats
|
||||
"""
|
||||
# Initialisation du dictionnaire data qui va contenir les résultats
|
||||
start = time.time()
|
||||
data = {}
|
||||
shows = tirage_elt.spectacle_set.select_related().all()
|
||||
members = tirage_elt.participant_set.all()
|
||||
choices = ChoixSpectacle.objects.filter(spectacle__tirage=tirage_elt) \
|
||||
.order_by('participant', 'priority').select_related().all()
|
||||
algo = Algorithm(shows, members, choices)
|
||||
results = algo(form.cleaned_data["token"])
|
||||
total_slots = 0
|
||||
total_losers = 0
|
||||
data = {
|
||||
'shows': tirage_elt.spectacle_set.select_related().all(),
|
||||
'token': token,
|
||||
'members': tirage_elt.participant_set.all(),
|
||||
'total_slots': 0,
|
||||
'total_losers': 0,
|
||||
'total_sold': 0,
|
||||
'total_deficit': 0,
|
||||
'opera_deficit': 0,
|
||||
}
|
||||
|
||||
# On lance le tirage
|
||||
choices = (
|
||||
ChoixSpectacle.objects
|
||||
.filter(spectacle__tirage=tirage_elt)
|
||||
.order_by('participant', 'priority')
|
||||
.select_related().all()
|
||||
)
|
||||
results = Algorithm(data['shows'], data['members'], choices)(token)
|
||||
|
||||
# On compte les places attribuées et les déçus
|
||||
for (_, members, losers) in results:
|
||||
total_slots += len(members)
|
||||
total_losers += len(losers)
|
||||
data["total_slots"] = total_slots
|
||||
data["total_losers"] = total_losers
|
||||
data["shows"] = shows
|
||||
data["token"] = form.cleaned_data["token"]
|
||||
data["members"] = members
|
||||
data["results"] = results
|
||||
total_sold = 0
|
||||
total_deficit = 0
|
||||
opera_deficit = 0
|
||||
data['total_slots'] += len(members)
|
||||
data['total_losers'] += len(losers)
|
||||
|
||||
# On calcule le déficit et les bénéfices pour le BdA
|
||||
# FIXME: le traitement de l'opéra est sale
|
||||
for (show, members, _) in results:
|
||||
deficit = (show.slots - len(members)) * show.price
|
||||
total_sold += show.slots * show.price
|
||||
data['total_sold'] += show.slots * show.price
|
||||
if deficit >= 0:
|
||||
if "Opéra" in show.location.name:
|
||||
opera_deficit += deficit
|
||||
total_deficit += deficit
|
||||
data["total_sold"] = total_sold - total_deficit
|
||||
data["total_deficit"] = total_deficit
|
||||
data["opera_deficit"] = opera_deficit
|
||||
data['opera_deficit'] += deficit
|
||||
data['total_deficit'] += deficit
|
||||
data["total_sold"] -= data['total_deficit']
|
||||
|
||||
# Participant objects are not shared accross spectacle results,
|
||||
# so assign a single object for each Participant id
|
||||
members_uniq = {}
|
||||
members2 = {}
|
||||
for (show, members, _) in results:
|
||||
for (member, _, _, _) in members:
|
||||
if member.id not in members_uniq:
|
||||
members_uniq[member.id] = member
|
||||
members2[member] = []
|
||||
member.total = 0
|
||||
member = members_uniq[member.id]
|
||||
members2[member].append(show)
|
||||
member.total += show.price
|
||||
members2 = members2.items()
|
||||
data["members2"] = sorted(members2, key=lambda m: m[0].user.last_name)
|
||||
|
||||
# ---
|
||||
# À partir d'ici, le tirage devient effectif
|
||||
# ---
|
||||
|
||||
# On suppression les vieilles attributions, on sauvegarde le token et on
|
||||
# désactive le tirage
|
||||
Attribution.objects.filter(spectacle__tirage=tirage_elt).delete()
|
||||
tirage_elt.tokens += '{:s}\n"""{:s}"""\n'.format(
|
||||
timezone.now().strftime("%y-%m-%d %H:%M:%S"),
|
||||
token)
|
||||
tirage_elt.enable_do_tirage = False
|
||||
tirage_elt.save()
|
||||
|
||||
# On enregistre les nouvelles attributions
|
||||
Attribution.objects.bulk_create([
|
||||
Attribution(spectacle=show, participant=member)
|
||||
for show, members, _ in results
|
||||
for member, _, _, _ in members
|
||||
])
|
||||
|
||||
# On inscrit à BdA-Revente ceux qui n'ont pas eu les places voulues
|
||||
for (show, _, losers) in results:
|
||||
for (loser, _, _, _) in losers:
|
||||
loser.choicesrevente.add(show)
|
||||
loser.save()
|
||||
|
||||
data["duration"] = time.time() - start
|
||||
if request.user.is_authenticated():
|
||||
members2 = {}
|
||||
# Participant objects are not shared accross spectacle results,
|
||||
# so assign a single object for each Participant id
|
||||
members_uniq = {}
|
||||
for (show, members, _) in results:
|
||||
for (member, _, _, _) in members:
|
||||
if member.id not in members_uniq:
|
||||
members_uniq[member.id] = member
|
||||
members2[member] = []
|
||||
member.total = 0
|
||||
member = members_uniq[member.id]
|
||||
members2[member].append(show)
|
||||
member.total += show.price
|
||||
members2 = members2.items()
|
||||
data["members2"] = sorted(members2, key=lambda m: m[0].user.last_name)
|
||||
# À partir d'ici, le tirage devient effectif
|
||||
Attribution.objects.filter(spectacle__tirage=tirage_elt).delete()
|
||||
tirage_elt.tokens += "%s\n\"\"\"%s\"\"\"\n" % (
|
||||
timezone.now().strftime("%y-%m-%d %H:%M:%S"),
|
||||
form.cleaned_data['token'])
|
||||
tirage_elt.enable_do_tirage = False
|
||||
tirage_elt.save()
|
||||
Attribution.objects.bulk_create([
|
||||
Attribution(spectacle=show, participant=member)
|
||||
for show, members, _ in results
|
||||
for member, _, _, _ in members])
|
||||
# On inscrit à BdA-Revente ceux qui n'ont pas eu les places voulues
|
||||
for (show, _, losers) in results:
|
||||
for (loser, _, _, _) in losers:
|
||||
loser.choicesrevente.add(show)
|
||||
loser.save()
|
||||
return render(request, "bda-attrib-extra.html", data)
|
||||
else:
|
||||
return render(request, "bda-attrib.html", data)
|
||||
data["results"] = results
|
||||
return data
|
||||
|
||||
|
||||
@buro_required
|
||||
|
@ -263,7 +280,8 @@ def tirage(request, tirage_id):
|
|||
if request.POST:
|
||||
form = TokenForm(request.POST)
|
||||
if form.is_valid():
|
||||
return do_tirage(request, tirage_id)
|
||||
results = do_tirage(tirage_elt, form.cleaned_data['token'])
|
||||
return render(request, "bda-attrib-extra.html", results)
|
||||
else:
|
||||
form = TokenForm()
|
||||
return render(request, "bda-token.html", {"form": form})
|
||||
|
|
|
@ -152,156 +152,6 @@
|
|||
"model": "gestioncof.petitcourssubject",
|
||||
"pk": 4
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 1,
|
||||
"niveau": "college",
|
||||
"user": 11,
|
||||
"agrege": false
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 1
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 1,
|
||||
"niveau": "lycee",
|
||||
"user": 11,
|
||||
"agrege": false
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 2
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 1,
|
||||
"niveau": "prepa1styear",
|
||||
"user": 11,
|
||||
"agrege": false
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 3
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 1,
|
||||
"niveau": "prepa2ndyear",
|
||||
"user": 11,
|
||||
"agrege": false
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 4
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 1,
|
||||
"niveau": "licence3",
|
||||
"user": 11,
|
||||
"agrege": false
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 5
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 1,
|
||||
"niveau": "prepa1styear",
|
||||
"user": 43,
|
||||
"agrege": true
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 6
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 1,
|
||||
"niveau": "prepa2ndyear",
|
||||
"user": 43,
|
||||
"agrege": true
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 7
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 1,
|
||||
"niveau": "licence3",
|
||||
"user": 43,
|
||||
"agrege": true
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 8
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 2,
|
||||
"niveau": "college",
|
||||
"user": 43,
|
||||
"agrege": false
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 9
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 2,
|
||||
"niveau": "lycee",
|
||||
"user": 43,
|
||||
"agrege": false
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 10
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 3,
|
||||
"niveau": "lycee",
|
||||
"user": 48,
|
||||
"agrege": true
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 11
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 3,
|
||||
"niveau": "prepa1styear",
|
||||
"user": 48,
|
||||
"agrege": true
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 12
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 3,
|
||||
"niveau": "prepa2ndyear",
|
||||
"user": 48,
|
||||
"agrege": true
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 13
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 3,
|
||||
"niveau": "licence3",
|
||||
"user": 48,
|
||||
"agrege": true
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 14
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"matiere": 4,
|
||||
"niveau": "college",
|
||||
"user": 10,
|
||||
"agrege": false
|
||||
},
|
||||
"model": "gestioncof.petitcoursability",
|
||||
"pk": 15
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"traitee": false,
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
[
|
||||
{
|
||||
"fields": {
|
||||
"username": "root",
|
||||
"first_name": "super",
|
||||
"last_name": "user",
|
||||
"is_active": true,
|
||||
"is_superuser": true,
|
||||
"is_staff": true,
|
||||
"last_login": null,
|
||||
"groups": [],
|
||||
"user_permissions": [],
|
||||
"password": "pbkdf2_sha256$12000$yRpkPuayQ8De$h6bDe+Q4kMikzwEbLNw2I9/V/1/v3F3yLIjEZIFSHrY=",
|
||||
"email": "root@localhost",
|
||||
"date_joined": "2016-06-15T17:50:57Z"
|
||||
},
|
||||
"model": "auth.user",
|
||||
"pk": 62
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"departement": "",
|
||||
"type_cotiz": "normalien",
|
||||
"petits_cours_remarques": "",
|
||||
"is_buro": true,
|
||||
"is_cof": true,
|
||||
"mailing_cof": true,
|
||||
"comments": "Super utilisateur",
|
||||
"login_clipper": "",
|
||||
"phone": "",
|
||||
"num": 62,
|
||||
"mailing_bda_revente": true,
|
||||
"user": 62,
|
||||
"petits_cours_accept": false,
|
||||
"mailing_bda": true,
|
||||
"occupation": "1A"
|
||||
},
|
||||
"model": "gestioncof.cofprofile",
|
||||
"pk": 62
|
||||
}
|
||||
]
|
File diff suppressed because it is too large
Load diff
41
gestioncof/management/base.py
Normal file
41
gestioncof/management/base.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
"""
|
||||
Un mixin à utiliser avec BaseCommand pour charger des objets depuis un json
|
||||
"""
|
||||
|
||||
import os
|
||||
import json
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
|
||||
class MyBaseCommand(BaseCommand):
|
||||
"""
|
||||
Ajoute une méthode ``from_json`` qui charge des objets à partir d'un json.
|
||||
"""
|
||||
|
||||
def from_json(self, filename, data_dir, klass,
|
||||
callback=lambda obj: obj):
|
||||
"""
|
||||
Charge les objets contenus dans le fichier json référencé par
|
||||
``filename`` dans la base de donnée. La fonction callback est appelées
|
||||
sur chaque objet avant enregistrement.
|
||||
"""
|
||||
self.stdout.write("Chargement de {:s}".format(filename))
|
||||
with open(os.path.join(data_dir, filename), 'r') as file:
|
||||
descriptions = json.load(file)
|
||||
objects = []
|
||||
nb_new = 0
|
||||
for description in descriptions:
|
||||
qset = klass.objects.filter(**description)
|
||||
try:
|
||||
objects.append(qset.get())
|
||||
except klass.DoesNotExist:
|
||||
obj = klass(**description)
|
||||
obj = callback(obj)
|
||||
obj.save()
|
||||
objects.append(obj)
|
||||
nb_new += 1
|
||||
self.stdout.write("- {:d} objets créés".format(nb_new))
|
||||
self.stdout.write("- {:d} objets gardés en l'état"
|
||||
.format(len(objects)-nb_new))
|
||||
return objects
|
109
gestioncof/management/commands/loaddevdata.py
Normal file
109
gestioncof/management/commands/loaddevdata.py
Normal file
|
@ -0,0 +1,109 @@
|
|||
"""
|
||||
Charge des données de test dans la BDD
|
||||
- Utilisateurs
|
||||
- Sondage
|
||||
- Événement
|
||||
- Petits cours
|
||||
"""
|
||||
|
||||
|
||||
import os
|
||||
import random
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.management import call_command
|
||||
|
||||
from gestioncof.management.base import MyBaseCommand
|
||||
from gestioncof.petits_cours_models import (
|
||||
PetitCoursAbility, PetitCoursSubject, LEVELS_CHOICES,
|
||||
PetitCoursAttributionCounter
|
||||
)
|
||||
|
||||
# Où sont stockés les fichiers json
|
||||
DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)),
|
||||
'data')
|
||||
|
||||
|
||||
class Command(MyBaseCommand):
|
||||
help = "Charge des données de test dans la BDD"
|
||||
|
||||
def add_arguments(self, parser):
|
||||
"""
|
||||
Permet de ne pas créer l'utilisateur "root".
|
||||
"""
|
||||
parser.add_argument(
|
||||
'--no-root',
|
||||
action='store_true',
|
||||
dest='no-root',
|
||||
default=False,
|
||||
help='Ne crée pas l\'utilisateur "root"'
|
||||
)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
# ---
|
||||
# Utilisateurs
|
||||
# ---
|
||||
|
||||
# Gaulois
|
||||
gaulois = self.from_json('gaulois.json', DATA_DIR, User)
|
||||
for user in gaulois:
|
||||
user.profile.is_cof = True
|
||||
user.profile.save()
|
||||
|
||||
# Romains
|
||||
self.from_json('romains.json', DATA_DIR, User)
|
||||
|
||||
# Root
|
||||
no_root = options.get('no-root', False)
|
||||
if not no_root:
|
||||
self.stdout.write("Création de l'utilisateur root")
|
||||
root, _ = User.objects.get_or_create(
|
||||
username='root',
|
||||
first_name='super',
|
||||
last_name='user',
|
||||
email='root@localhost')
|
||||
root.set_password('root')
|
||||
root.is_staff = True
|
||||
root.is_superuser = True
|
||||
root.profile.is_cof = True
|
||||
root.profile.is_buro = True
|
||||
root.profile.save()
|
||||
root.save()
|
||||
|
||||
# ---
|
||||
# Petits cours
|
||||
# ---
|
||||
|
||||
self.stdout.write("Inscriptions au système des petits cours")
|
||||
levels = [id for (id, verbose) in LEVELS_CHOICES]
|
||||
subjects = list(PetitCoursSubject.objects.all())
|
||||
nb_of_teachers = 0
|
||||
for user in gaulois:
|
||||
if random.randint(0, 1):
|
||||
nb_of_teachers += 1
|
||||
# L'utilisateur reçoit les demandes de petits cours
|
||||
user.profile.petits_cours_accept = True
|
||||
user.save()
|
||||
# L'utilisateur est compétent dans une matière
|
||||
subject = random.choice(subjects)
|
||||
if not PetitCoursAbility.objects.filter(
|
||||
user=user,
|
||||
matiere=subject).exists():
|
||||
PetitCoursAbility.objects.create(
|
||||
user=user,
|
||||
matiere=subject,
|
||||
niveau=random.choice(levels),
|
||||
agrege=bool(random.randint(0, 1))
|
||||
)
|
||||
# On initialise son compteur d'attributions
|
||||
PetitCoursAttributionCounter.objects.get_or_create(
|
||||
user=user,
|
||||
matiere=subject
|
||||
)
|
||||
self.stdout.write("- {:d} inscriptions".format(nb_of_teachers))
|
||||
|
||||
# ---
|
||||
# Le BdA
|
||||
# ---
|
||||
|
||||
call_command('loadbdadevdata')
|
368
gestioncof/management/data/gaulois.json
Normal file
368
gestioncof/management/data/gaulois.json
Normal file
|
@ -0,0 +1,368 @@
|
|||
[
|
||||
{
|
||||
"username": "Abraracourcix",
|
||||
"email": "Abraracourcix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Abraracourcix"
|
||||
},
|
||||
{
|
||||
"username": "Acidenitrix",
|
||||
"email": "Acidenitrix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Acidenitrix"
|
||||
},
|
||||
{
|
||||
"username": "Agecanonix",
|
||||
"email": "Agecanonix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Agecanonix"
|
||||
},
|
||||
{
|
||||
"username": "Alambix",
|
||||
"email": "Alambix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Alambix"
|
||||
},
|
||||
{
|
||||
"username": "Amerix",
|
||||
"email": "Amerix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Amerix"
|
||||
},
|
||||
{
|
||||
"username": "Amnesix",
|
||||
"email": "Amnesix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Amnesix"
|
||||
},
|
||||
{
|
||||
"username": "Aniline",
|
||||
"email": "Aniline.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Aniline"
|
||||
},
|
||||
{
|
||||
"username": "Aplusbegalix",
|
||||
"email": "Aplusbegalix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Aplusbegalix"
|
||||
},
|
||||
{
|
||||
"username": "Archeopterix",
|
||||
"email": "Archeopterix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Archeopterix"
|
||||
},
|
||||
{
|
||||
"username": "Assurancetourix",
|
||||
"email": "Assurancetourix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Assurancetourix"
|
||||
},
|
||||
{
|
||||
"username": "Asterix",
|
||||
"email": "Asterix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Asterix"
|
||||
},
|
||||
{
|
||||
"username": "Astronomix",
|
||||
"email": "Astronomix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Astronomix"
|
||||
},
|
||||
{
|
||||
"username": "Avoranfix",
|
||||
"email": "Avoranfix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Avoranfix"
|
||||
},
|
||||
{
|
||||
"username": "Barometrix",
|
||||
"email": "Barometrix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Barometrix"
|
||||
},
|
||||
{
|
||||
"username": "Beaufix",
|
||||
"email": "Beaufix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Beaufix"
|
||||
},
|
||||
{
|
||||
"username": "Berlix",
|
||||
"email": "Berlix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Berlix"
|
||||
},
|
||||
{
|
||||
"username": "Bonemine",
|
||||
"email": "Bonemine.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Bonemine"
|
||||
},
|
||||
{
|
||||
"username": "Boufiltre",
|
||||
"email": "Boufiltre.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Boufiltre"
|
||||
},
|
||||
{
|
||||
"username": "Catedralgotix",
|
||||
"email": "Catedralgotix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Catedralgotix"
|
||||
},
|
||||
{
|
||||
"username": "CesarLabeldecadix",
|
||||
"email": "CesarLabeldecadix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "CesarLabeldecadix"
|
||||
},
|
||||
{
|
||||
"username": "Cetautomatix",
|
||||
"email": "Cetautomatix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Cetautomatix"
|
||||
},
|
||||
{
|
||||
"username": "Cetyounix",
|
||||
"email": "Cetyounix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Cetyounix"
|
||||
},
|
||||
{
|
||||
"username": "Changeledix",
|
||||
"email": "Changeledix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Changeledix"
|
||||
},
|
||||
{
|
||||
"username": "Chanteclairix",
|
||||
"email": "Chanteclairix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Chanteclairix"
|
||||
},
|
||||
{
|
||||
"username": "Cicatrix",
|
||||
"email": "Cicatrix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Cicatrix"
|
||||
},
|
||||
{
|
||||
"username": "Comix",
|
||||
"email": "Comix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Comix"
|
||||
},
|
||||
{
|
||||
"username": "Diagnostix",
|
||||
"email": "Diagnostix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Diagnostix"
|
||||
},
|
||||
{
|
||||
"username": "Doublepolemix",
|
||||
"email": "Doublepolemix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Doublepolemix"
|
||||
},
|
||||
{
|
||||
"username": "Eponine",
|
||||
"email": "Eponine.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Eponine"
|
||||
},
|
||||
{
|
||||
"username": "Falbala",
|
||||
"email": "Falbala.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Falbala"
|
||||
},
|
||||
{
|
||||
"username": "Fanzine",
|
||||
"email": "Fanzine.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Fanzine"
|
||||
},
|
||||
{
|
||||
"username": "Gelatine",
|
||||
"email": "Gelatine.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Gelatine"
|
||||
},
|
||||
{
|
||||
"username": "Goudurix",
|
||||
"email": "Goudurix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Goudurix"
|
||||
},
|
||||
{
|
||||
"username": "Homeopatix",
|
||||
"email": "Homeopatix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Homeopatix"
|
||||
},
|
||||
{
|
||||
"username": "Idefix",
|
||||
"email": "Idefix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Idefix"
|
||||
},
|
||||
{
|
||||
"username": "Ielosubmarine",
|
||||
"email": "Ielosubmarine.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Ielosubmarine"
|
||||
},
|
||||
{
|
||||
"username": "Keskonrix",
|
||||
"email": "Keskonrix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Keskonrix"
|
||||
},
|
||||
{
|
||||
"username": "Lentix",
|
||||
"email": "Lentix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Lentix"
|
||||
},
|
||||
{
|
||||
"username": "Maestria",
|
||||
"email": "Maestria.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Maestria"
|
||||
},
|
||||
{
|
||||
"username": "MaitrePanix",
|
||||
"email": "MaitrePanix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "MaitrePanix"
|
||||
},
|
||||
{
|
||||
"username": "MmeAgecanonix",
|
||||
"email": "MmeAgecanonix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "MmeAgecanonix"
|
||||
},
|
||||
{
|
||||
"username": "Moralelastix",
|
||||
"email": "Moralelastix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Moralelastix"
|
||||
},
|
||||
{
|
||||
"username": "Obelix",
|
||||
"email": "Obelix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Obelix"
|
||||
},
|
||||
{
|
||||
"username": "Obelodalix",
|
||||
"email": "Obelodalix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Obelodalix"
|
||||
},
|
||||
{
|
||||
"username": "Odalix",
|
||||
"email": "Odalix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Odalix"
|
||||
},
|
||||
{
|
||||
"username": "Ordralfabetix",
|
||||
"email": "Ordralfabetix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Ordralfabetix"
|
||||
},
|
||||
{
|
||||
"username": "Orthopedix",
|
||||
"email": "Orthopedix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Orthopedix"
|
||||
},
|
||||
{
|
||||
"username": "Panoramix",
|
||||
"email": "Panoramix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Panoramix"
|
||||
},
|
||||
{
|
||||
"username": "Plaintcontrix",
|
||||
"email": "Plaintcontrix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Plaintcontrix"
|
||||
},
|
||||
{
|
||||
"username": "Praline",
|
||||
"email": "Praline.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Praline"
|
||||
},
|
||||
{
|
||||
"username": "Prefix",
|
||||
"email": "Prefix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Prefix"
|
||||
},
|
||||
{
|
||||
"username": "Prolix",
|
||||
"email": "Prolix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Prolix"
|
||||
},
|
||||
{
|
||||
"username": "Pronostix",
|
||||
"email": "Pronostix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Pronostix"
|
||||
},
|
||||
{
|
||||
"username": "Quatredeusix",
|
||||
"email": "Quatredeusix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Quatredeusix"
|
||||
},
|
||||
{
|
||||
"username": "Saingesix",
|
||||
"email": "Saingesix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Saingesix"
|
||||
},
|
||||
{
|
||||
"username": "Segregationnix",
|
||||
"email": "Segregationnix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Segregationnix"
|
||||
},
|
||||
{
|
||||
"username": "Septantesix",
|
||||
"email": "Septantesix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Septantesix"
|
||||
},
|
||||
{
|
||||
"username": "Tournedix",
|
||||
"email": "Tournedix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Tournedix"
|
||||
},
|
||||
{
|
||||
"username": "Tragicomix",
|
||||
"email": "Tragicomix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Tragicomix"
|
||||
},
|
||||
{
|
||||
"username": "Coriza",
|
||||
"email": "Coriza.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Coriza"
|
||||
},
|
||||
{
|
||||
"username": "Zerozerosix",
|
||||
"email": "Zerozerosix.gaulois@ens.fr",
|
||||
"last_name": "Gaulois",
|
||||
"first_name": "Zerozerosix"
|
||||
}
|
||||
]
|
614
gestioncof/management/data/romains.json
Normal file
614
gestioncof/management/data/romains.json
Normal file
|
@ -0,0 +1,614 @@
|
|||
[
|
||||
{
|
||||
"username": "Abel",
|
||||
"email": "Abel.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Abel"
|
||||
},
|
||||
{
|
||||
"username": "Abelardus",
|
||||
"email": "Abelardus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Abelardus"
|
||||
},
|
||||
{
|
||||
"username": "Abrahamus",
|
||||
"email": "Abrahamus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Abrahamus"
|
||||
},
|
||||
{
|
||||
"username": "Acacius",
|
||||
"email": "Acacius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Acacius"
|
||||
},
|
||||
{
|
||||
"username": "Accius",
|
||||
"email": "Accius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Accius"
|
||||
},
|
||||
{
|
||||
"username": "Achaicus",
|
||||
"email": "Achaicus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Achaicus"
|
||||
},
|
||||
{
|
||||
"username": "Achill",
|
||||
"email": "Achill.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Achill"
|
||||
},
|
||||
{
|
||||
"username": "Achilles",
|
||||
"email": "Achilles.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Achilles"
|
||||
},
|
||||
{
|
||||
"username": "Achilleus",
|
||||
"email": "Achilleus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Achilleus"
|
||||
},
|
||||
{
|
||||
"username": "Acrisius",
|
||||
"email": "Acrisius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Acrisius"
|
||||
},
|
||||
{
|
||||
"username": "Actaeon",
|
||||
"email": "Actaeon.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Actaeon"
|
||||
},
|
||||
{
|
||||
"username": "Acteon",
|
||||
"email": "Acteon.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Acteon"
|
||||
},
|
||||
{
|
||||
"username": "Adalricus",
|
||||
"email": "Adalricus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Adalricus"
|
||||
},
|
||||
{
|
||||
"username": "Adelfonsus",
|
||||
"email": "Adelfonsus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Adelfonsus"
|
||||
},
|
||||
{
|
||||
"username": "Adelphus",
|
||||
"email": "Adelphus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Adelphus"
|
||||
},
|
||||
{
|
||||
"username": "Adeodatus",
|
||||
"email": "Adeodatus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Adeodatus"
|
||||
},
|
||||
{
|
||||
"username": "Adolfus",
|
||||
"email": "Adolfus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Adolfus"
|
||||
},
|
||||
{
|
||||
"username": "Adolphus",
|
||||
"email": "Adolphus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Adolphus"
|
||||
},
|
||||
{
|
||||
"username": "Adrastus",
|
||||
"email": "Adrastus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Adrastus"
|
||||
},
|
||||
{
|
||||
"username": "Adrianus",
|
||||
"email": "Adrianus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Adrianus"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6gidius",
|
||||
"email": "\u00c6gidius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6gidius"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6lia",
|
||||
"email": "\u00c6lia.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6lia"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6lianus",
|
||||
"email": "\u00c6lianus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6lianus"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6milianus",
|
||||
"email": "\u00c6milianus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6milianus"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6milius",
|
||||
"email": "\u00c6milius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6milius"
|
||||
},
|
||||
{
|
||||
"username": "Aeneas",
|
||||
"email": "Aeneas.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Aeneas"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6olus",
|
||||
"email": "\u00c6olus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6olus"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6schylus",
|
||||
"email": "\u00c6schylus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6schylus"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6son",
|
||||
"email": "\u00c6son.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6son"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6sop",
|
||||
"email": "\u00c6sop.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6sop"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6ther",
|
||||
"email": "\u00c6ther.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6ther"
|
||||
},
|
||||
{
|
||||
"username": "\u00c6tius",
|
||||
"email": "\u00c6tius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "\u00c6tius"
|
||||
},
|
||||
{
|
||||
"username": "Agapetus",
|
||||
"email": "Agapetus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Agapetus"
|
||||
},
|
||||
{
|
||||
"username": "Agapitus",
|
||||
"email": "Agapitus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Agapitus"
|
||||
},
|
||||
{
|
||||
"username": "Agapius",
|
||||
"email": "Agapius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Agapius"
|
||||
},
|
||||
{
|
||||
"username": "Agathangelus",
|
||||
"email": "Agathangelus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Agathangelus"
|
||||
},
|
||||
{
|
||||
"username": "Aigidius",
|
||||
"email": "Aigidius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Aigidius"
|
||||
},
|
||||
{
|
||||
"username": "Aiolus",
|
||||
"email": "Aiolus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Aiolus"
|
||||
},
|
||||
{
|
||||
"username": "Ajax",
|
||||
"email": "Ajax.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Ajax"
|
||||
},
|
||||
{
|
||||
"username": "Alair",
|
||||
"email": "Alair.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alair"
|
||||
},
|
||||
{
|
||||
"username": "Alaricus",
|
||||
"email": "Alaricus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alaricus"
|
||||
},
|
||||
{
|
||||
"username": "Albanus",
|
||||
"email": "Albanus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Albanus"
|
||||
},
|
||||
{
|
||||
"username": "Alberic",
|
||||
"email": "Alberic.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alberic"
|
||||
},
|
||||
{
|
||||
"username": "Albericus",
|
||||
"email": "Albericus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Albericus"
|
||||
},
|
||||
{
|
||||
"username": "Albertus",
|
||||
"email": "Albertus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Albertus"
|
||||
},
|
||||
{
|
||||
"username": "Albinus",
|
||||
"email": "Albinus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Albinus"
|
||||
},
|
||||
{
|
||||
"username": "Albus",
|
||||
"email": "Albus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Albus"
|
||||
},
|
||||
{
|
||||
"username": "Alcaeus",
|
||||
"email": "Alcaeus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alcaeus"
|
||||
},
|
||||
{
|
||||
"username": "Alcander",
|
||||
"email": "Alcander.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alcander"
|
||||
},
|
||||
{
|
||||
"username": "Alcimus",
|
||||
"email": "Alcimus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alcimus"
|
||||
},
|
||||
{
|
||||
"username": "Alcinder",
|
||||
"email": "Alcinder.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alcinder"
|
||||
},
|
||||
{
|
||||
"username": "Alerio",
|
||||
"email": "Alerio.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alerio"
|
||||
},
|
||||
{
|
||||
"username": "Alexandrus",
|
||||
"email": "Alexandrus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alexandrus"
|
||||
},
|
||||
{
|
||||
"username": "Alexis",
|
||||
"email": "Alexis.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alexis"
|
||||
},
|
||||
{
|
||||
"username": "Alexius",
|
||||
"email": "Alexius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alexius"
|
||||
},
|
||||
{
|
||||
"username": "Alexus",
|
||||
"email": "Alexus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alexus"
|
||||
},
|
||||
{
|
||||
"username": "Alfonsus",
|
||||
"email": "Alfonsus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alfonsus"
|
||||
},
|
||||
{
|
||||
"username": "Alfredus",
|
||||
"email": "Alfredus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alfredus"
|
||||
},
|
||||
{
|
||||
"username": "Almericus",
|
||||
"email": "Almericus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Almericus"
|
||||
},
|
||||
{
|
||||
"username": "Aloisius",
|
||||
"email": "Aloisius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Aloisius"
|
||||
},
|
||||
{
|
||||
"username": "Aloysius",
|
||||
"email": "Aloysius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Aloysius"
|
||||
},
|
||||
{
|
||||
"username": "Alphaeus",
|
||||
"email": "Alphaeus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alphaeus"
|
||||
},
|
||||
{
|
||||
"username": "Alpheaus",
|
||||
"email": "Alpheaus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alpheaus"
|
||||
},
|
||||
{
|
||||
"username": "Alpheus",
|
||||
"email": "Alpheus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alpheus"
|
||||
},
|
||||
{
|
||||
"username": "Alphoeus",
|
||||
"email": "Alphoeus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alphoeus"
|
||||
},
|
||||
{
|
||||
"username": "Alphonsus",
|
||||
"email": "Alphonsus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alphonsus"
|
||||
},
|
||||
{
|
||||
"username": "Alphonzus",
|
||||
"email": "Alphonzus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alphonzus"
|
||||
},
|
||||
{
|
||||
"username": "Alvinius",
|
||||
"email": "Alvinius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alvinius"
|
||||
},
|
||||
{
|
||||
"username": "Alvredus",
|
||||
"email": "Alvredus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Alvredus"
|
||||
},
|
||||
{
|
||||
"username": "Amadeus",
|
||||
"email": "Amadeus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amadeus"
|
||||
},
|
||||
{
|
||||
"username": "Amaliricus",
|
||||
"email": "Amaliricus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amaliricus"
|
||||
},
|
||||
{
|
||||
"username": "Amandus",
|
||||
"email": "Amandus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amandus"
|
||||
},
|
||||
{
|
||||
"username": "Amantius",
|
||||
"email": "Amantius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amantius"
|
||||
},
|
||||
{
|
||||
"username": "Amarandus",
|
||||
"email": "Amarandus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amarandus"
|
||||
},
|
||||
{
|
||||
"username": "Amaranthus",
|
||||
"email": "Amaranthus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amaranthus"
|
||||
},
|
||||
{
|
||||
"username": "Amatus",
|
||||
"email": "Amatus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amatus"
|
||||
},
|
||||
{
|
||||
"username": "Ambrosianus",
|
||||
"email": "Ambrosianus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Ambrosianus"
|
||||
},
|
||||
{
|
||||
"username": "Ambrosius",
|
||||
"email": "Ambrosius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Ambrosius"
|
||||
},
|
||||
{
|
||||
"username": "Amedeus",
|
||||
"email": "Amedeus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amedeus"
|
||||
},
|
||||
{
|
||||
"username": "Americus",
|
||||
"email": "Americus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Americus"
|
||||
},
|
||||
{
|
||||
"username": "Amlethus",
|
||||
"email": "Amlethus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amlethus"
|
||||
},
|
||||
{
|
||||
"username": "Amletus",
|
||||
"email": "Amletus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amletus"
|
||||
},
|
||||
{
|
||||
"username": "Amor",
|
||||
"email": "Amor.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amor"
|
||||
},
|
||||
{
|
||||
"username": "Ampelius",
|
||||
"email": "Ampelius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Ampelius"
|
||||
},
|
||||
{
|
||||
"username": "Amphion",
|
||||
"email": "Amphion.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Amphion"
|
||||
},
|
||||
{
|
||||
"username": "Anacletus",
|
||||
"email": "Anacletus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Anacletus"
|
||||
},
|
||||
{
|
||||
"username": "Anastasius",
|
||||
"email": "Anastasius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Anastasius"
|
||||
},
|
||||
{
|
||||
"username": "Anastatius",
|
||||
"email": "Anastatius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Anastatius"
|
||||
},
|
||||
{
|
||||
"username": "Anastius",
|
||||
"email": "Anastius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Anastius"
|
||||
},
|
||||
{
|
||||
"username": "Anatolius",
|
||||
"email": "Anatolius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Anatolius"
|
||||
},
|
||||
{
|
||||
"username": "Androcles",
|
||||
"email": "Androcles.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Androcles"
|
||||
},
|
||||
{
|
||||
"username": "Andronicus",
|
||||
"email": "Andronicus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Andronicus"
|
||||
},
|
||||
{
|
||||
"username": "Anencletus",
|
||||
"email": "Anencletus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Anencletus"
|
||||
},
|
||||
{
|
||||
"username": "Angelicus",
|
||||
"email": "Angelicus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Angelicus"
|
||||
},
|
||||
{
|
||||
"username": "Angelus",
|
||||
"email": "Angelus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Angelus"
|
||||
},
|
||||
{
|
||||
"username": "Anicetus",
|
||||
"email": "Anicetus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Anicetus"
|
||||
},
|
||||
{
|
||||
"username": "Antigonus",
|
||||
"email": "Antigonus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Antigonus"
|
||||
},
|
||||
{
|
||||
"username": "Antipater",
|
||||
"email": "Antipater.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Antipater"
|
||||
},
|
||||
{
|
||||
"username": "Antoninus",
|
||||
"email": "Antoninus.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Antoninus"
|
||||
},
|
||||
{
|
||||
"username": "Antonius",
|
||||
"email": "Antonius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Antonius"
|
||||
},
|
||||
{
|
||||
"username": "Aphrodisius",
|
||||
"email": "Aphrodisius.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Aphrodisius"
|
||||
},
|
||||
{
|
||||
"username": "Apollinaris",
|
||||
"email": "Apollinaris.Romain@ens.fr",
|
||||
"last_name": "Romain",
|
||||
"first_name": "Apollinaris"
|
||||
}
|
||||
]
|
|
@ -3,5 +3,6 @@
|
|||
|
||||
source ~/venv/bin/activate
|
||||
python manage.py migrate
|
||||
python manage.py loaddata users root bda gestion sites
|
||||
python manage.py loaddata gestion sites
|
||||
python manage.py loaddevdata
|
||||
python manage.py collectstatic --noinput
|
||||
|
|
Loading…
Reference in a new issue