Rend kfetloaddevdata idempotent

Problème :

Le script assigne des trigrammes 001, 002, 003, etc aux comptes COF des
Gaulois et des Romains en utilisant l'ordre du queryset
CofProfile.objects.all().
L'ordre des comptes dans le queryset n'est pas spécifié et peut varier
d'une exécution à l'autre, ça pose problème dans la suite :

Account.objects.get_or_create(trigramme=trigramme, cofprofile=profile)

Cette command essaie de créer un nouveau trigramme pour certains comptes
quand l'ordre change.

Solution :

Ordonner le queryset.
This commit is contained in:
Martin Pépin 2020-12-04 12:44:09 +01:00
parent cc3a436750
commit 5d22a4cac4
No known key found for this signature in database
GPG key ID: E7520278B1774448

View file

@ -52,10 +52,12 @@ class Command(MyBaseCommand):
self.stdout.write("Création des comptes K-Fêt") self.stdout.write("Création des comptes K-Fêt")
gaulois = CofProfile.objects.filter(user__last_name="Gaulois") cof_profiles = CofProfile.objects.order_by("user__username")
gaulois = cof_profiles.filter(user__last_name="Gaulois")
gaulois_trigramme = map("{:03d}".format, range(50)) gaulois_trigramme = map("{:03d}".format, range(50))
romains = CofProfile.objects.filter(user__last_name="Romain") romains = cof_profiles.filter(user__last_name="Romain")
romains_trigramme = map(lambda x: str(100 + x), range(99)) romains_trigramme = map(lambda x: str(100 + x), range(99))
created_accounts = 0 created_accounts = 0