From 5d22a4cac43b1f83d321b23839d277e96dfb8149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Fri, 4 Dec 2020 12:44:09 +0100 Subject: [PATCH] Rend kfetloaddevdata idempotent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- kfet/management/commands/loadkfetdevdata.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kfet/management/commands/loadkfetdevdata.py b/kfet/management/commands/loadkfetdevdata.py index 43b14b09..2a15cb0a 100644 --- a/kfet/management/commands/loadkfetdevdata.py +++ b/kfet/management/commands/loadkfetdevdata.py @@ -52,10 +52,12 @@ class Command(MyBaseCommand): 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)) - 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)) created_accounts = 0