Development #43516
Réduire le nombre de queryset sur la page settings d'un agenda de type meetings
0%
Description
Ajouter quelques prefetch bien placés
Fichiers
Révisions associées
agendas: reduce querysets on settings view (#43516)
Historique
Mis à jour par Lauréline Guérin il y a presque 4 ans
- Fichier 0002-agendas-reduce-querysets-on-settings-view-43516.patch 0002-agendas-reduce-querysets-on-settings-view-43516.patch ajouté
- Fichier 0001-agendas-add-tests-on-queryset-for-agenda-settings-43.patch 0001-agendas-add-tests-on-queryset-for-agenda-settings-43.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
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 ?
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.
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).
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 :)
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)
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
agendas: add tests on queryset for agenda settings (#43516)