Project

General

Profile

Development #48624

Optimiser les accès en DB sur la vue settings des agendas rdv

Added by Emmanuel Cazenave 18 days ago. Updated 1 day ago.

Status:
Solution déployée
Priority:
Normal
Category:
-
Target version:
-
Start date:
17 Nov 2020
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

Description

Alourdis par #47395, voir #47395#note-6 et #47395#note-7 pour un début d'explication.


Files

Associated revisions

Revision 9e9a6d24 (diff)
Added by Lauréline Guérin 4 days ago

manager: add some data to test querysets (#48624)

Revision 1302ef18 (diff)
Added by Lauréline Guérin 4 days ago

manager: reduce querysets on agenda settings page (#48624)

History

#1

Updated by Valentin Deniaud 18 days ago

À traiter ici aussi, les exceptions jours fériés qui consomment également trop de requêtes (non couvert par les tests pour le moment), il faudrait un simple select_related('source') sur le qs des exceptions comme c'est déjà fait dans TimePeriodExceptionListView.

#2

Updated by Lauréline Guerin 17 days ago

  • Assignee set to Lauréline Guerin
#5

Updated by Emmanuel Cazenave 5 days ago

Sur l'essentiel je suis jaloux de pas avoir trouvé ça tout seul.

Je me dis peut-être avoir une implémentation par défaut de prefetched_exceptions, genre

@property
def prefetched_exceptions(self):
    if getattr(self, prefetched_exceptions_data, None) is None:
        self.prefetched_exception_data = TimePeriodException.objects.filter(Q(desk=desk) | Q(unavailability_calendar__desks=desk))
    return prefetched_exceptions_data

Avec du coup un desk.prefetched_exceptions_data = ... dans la vue, pour s'éviter les contorsions dans le test et pour filet de sécurité ?

#6

Updated by Lauréline Guerin 5 days ago

J'aime bien l'idée que ça pète si prefetched_exceptions n'est pas défini, ça évite l'utilisation irréfléchie de la méthode (ie sans avoir anticipé le prefetch), et les pb de perf :)

#7

Updated by Emmanuel Cazenave 5 days ago

  • Status changed from Solution proposée to Solution validée

Ok, on ne peut pas refuser ça à quelqu'un qui surveille Sentry.

#8

Updated by Lauréline Guerin 4 days ago

  • Status changed from Solution validée to Résolu (à déployer)
commit 1302ef186fb7ac721cb1e46c2d892918a42e7332
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Thu Nov 19 17:21:00 2020 +0100

    manager: reduce querysets on agenda settings page (#48624)

commit 9e9a6d24c1ff70766f53b3e95d39f1d3473391bb
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Thu Nov 19 15:26:00 2020 +0100

    manager: add some data to test querysets (#48624)
#9

Updated by Frédéric Péters 1 day ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF