api: do not fully load the related table when filtering on an item(s) field (#74320) #101

Merged
bdauvergne merged 1 commits from wip/74320-Optimiser-la-generation-de-crite into main 2023-02-11 00:47:43 +01:00
Owner

J'ai déplacé ItemField.get_display_value() dans ItemFieldMixin, pour l'avoir aussi dans ItemsField, la méthode fait toujours des trucs qui n'ont pas grand chose avoir pour aider au fonctionnement de wcs.qommon.forms.JsonpSingleSelectWidget, je laisse ce dépatouillage pour un autre jour.

Le test se base sur la fixture sql_queries (que j'ai du modifier au passage, les curseurs étant utilisés comme contextmanager dans la méthode select() désormais, ça consiste juste à remplacer Mock par MagicMock pour que enter()/exit() soient implémentés) et valide juste qu'il y a une seule requête vers la table des fiches et qu'elle contient bien un filtre sur l'id.

J'ai déplacé ItemField.get_display_value() dans ItemFieldMixin, pour l'avoir aussi dans ItemsField, la méthode fait toujours des trucs qui n'ont pas grand chose avoir pour aider au fonctionnement de wcs.qommon.forms.JsonpSingleSelectWidget, je laisse ce dépatouillage pour un autre jour. Le test se base sur la fixture sql_queries (que j'ai du modifier au passage, les curseurs étant utilisés comme contextmanager dans la méthode select() désormais, ça consiste juste à remplacer Mock par MagicMock pour que __enter__()/__exit__() soient implémentés) et valide juste qu'il y a une seule requête vers la table des fiches et qu'elle contient bien un filtre sur l'id.
fpeters reviewed 2023-02-08 18:42:14 +01:00
@ -100,3 +100,3 @@
def cursor(*args, **kwargs):
cur = old_cursor(*args, **kwargs)
mocked_cur = mock.Mock(wraps=cur)
mocked_cur = mock.MagicMock(wraps=cur)
Owner

Qu'est-ce que ça implique ?

Qu'est-ce que ça implique ?
Owner

(ok il n'y a pas le commentaire initial dans la vue "fichiers modifiés", c'est répondu).

(ok il n'y a pas le commentaire initial dans la vue "fichiers modifiés", c'est répondu).
fpeters marked this conversation as resolved
Owner

pour moi ok, grosse amélioration en local (requête api avec un filtre sur un champ item, branché sur un modèle de fiche comportant 10000 fiches)

pour moi ok, grosse amélioration en local (requête api avec un filtre sur un champ item, branché sur un modèle de fiche comportant 10000 fiches)
Author
Owner

A priori ça doit même améliorer les choses en backoffice, vu que c'est le même code qui tourne pour filtrer les tableaux.

A priori ça doit même améliorer les choses en backoffice, vu que c'est le même code qui tourne pour filtrer les tableaux.
lguerin approved these changes 2023-02-10 10:01:36 +01:00
bdauvergne force-pushed wip/74320-Optimiser-la-generation-de-crite from e728fb6cb0 to 9d2b4f1d09 2023-02-10 10:21:43 +01:00 Compare
bdauvergne force-pushed wip/74320-Optimiser-la-generation-de-crite from 9d2b4f1d09 to e1f8d16848 2023-02-11 00:47:27 +01:00 Compare
bdauvergne merged commit e1f8d16848 into main 2023-02-11 00:47:43 +01:00
bdauvergne deleted branch wip/74320-Optimiser-la-generation-de-crite 2023-02-11 00:47:43 +01:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/wcs#101
No description provided.