Projet

Général

Profil

Development #43516

Réduire le nombre de queryset sur la page settings d'un agenda de type meetings

Ajouté par Lauréline Guérin il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
02 juin 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Ajouter quelques prefetch bien placés


Fichiers

Révisions associées

Révision 23a55b16 (diff)
Ajouté par Lauréline Guérin il y a presque 4 ans

agendas: add tests on queryset for agenda settings (#43516)

Révision 123b40f5 (diff)
Ajouté par Lauréline Guérin il y a presque 4 ans

agendas: reduce querysets on settings view (#43516)

Historique

#2

Mis à jour par Emmanuel Cazenave il y a presque 4 ans

Il y a ce bout qui pose question parce qu'il y a plus le tri par 'start_datetime' :

-        next_exception = (
-            self.timeperiodexception_set.filter(start_datetime__gte=now()).order_by('start_datetime').first()
-        )
-        if next_exception:
-            return [next_exception]
+        for exception in self.timeperiodexception_set.all():
+            if exception.start_datetime < now():
+                # exception starts in the past, skip it
+                continue
+            # returns the first exception found
+            return [exception]

Mais en fait je ne comprends déjà pas ce bout avant ton patch, get_exceptions_within_two_weeks qui renvoie les exceptions des deux prochaines semaines, sauf quand finalement ça renvoie la prochaine exception au delà de deux semaines.

Bref sur la perte de ce tri, c'est bien fait vu et sans effets de bord ?

#3

Mis à jour par Lauréline Guérin il y a presque 4 ans

L'ordering par défaut au niveau du model est 'start_datetime'. Si on veut pouvoir utiliser le prefetch posé dans la vue, il ne faut pas rajouter de l'ordering dans cette méthode.

Mais en fait je ne comprends déjà pas ce bout avant ton patch, get_exceptions_within_two_weeks qui renvoie les exceptions des deux prochaines semaines, sauf quand finalement ça renvoie la prochaine exception au delà de deux semaines.

La méthode avait déjà ce comportement avant que je la modifie :)
J'ai ajouté des tests unitaires/de non régression avant d'y toucher.

#4

Mis à jour par Emmanuel Cazenave il y a presque 4 ans

  • Statut changé de Solution proposée à Solution validée

Lauréline Guerin a écrit :

L'ordering par défaut au niveau du model est 'start_datetime'.

Ok c'est ça que j'ai loupé (petit achtung, quelques vague souvenirs de patchs où on force l'ordering parce que celui par défaut semble ne pas s'appliquer, mais bon on va dire que ça va marcher ici).

#5

Mis à jour par Lauréline Guérin il y a presque 4 ans

si tu veux, j'ajouterai un peu d'entropie dans les tests unitaires avant de merger: faire en sorte que les exceptions ne soient pas dans le même ordre lorsqu'elles sont triées par pk/date d'écriture dans la DB (ce qui est généralement le comportement d'un select sans ordering) et par start_datetime :)

#6

Mis à jour par Lauréline Guérin il y a presque 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 123b40f59ae4997fc60f1e6b2feeb197b14b124e
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Tue Jun 2 10:07:31 2020 +0200

    agendas: reduce querysets on settings view (#43516)

commit 23a55b16b3aa57807fb373048d1cbe0654b39c98
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Tue Jun 2 09:44:53 2020 +0200

    agendas: add tests on queryset for agenda settings (#43516)
#7

Mis à jour par Frédéric Péters il y a presque 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF