wcs: resolve card_ids lazily (#74306) #43
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/74306-wcs-resoudre-la-liste-des-ids-de"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The class LazyValue is a thunk1 like in lazy evaluated language it is
initialized with a function needing no argument and store its result on
first call.
Direct access to the context to get the ids is replaced by calls to new
method WcsCardCell.get_card_ids(context). Original get_card_ids() is
renamed resolve_card_ids() and used with LazyValue to implement the lazy
evaluation of card_ids.
This line was modified as it does not really work :
since card_ids can contain templates like
which will evaluate to True even if the template returns only one card
(one test was broken because of this, the bug was hidden by eager
evaluation of card_ids previously).
@ -1287,7 +1306,8 @@ class WcsCardCell(CardMixin, CellBase):
if first_cell.related_card_path:
# no explicit ids
return []
if ',' in first_cell.card_ids:
Non, c'était très bien comme ça:
S'il y a une virgule dans le template, alors potentiellement on peut avoir plusieurs ids (ça dépend de la page et des ids trouvés dans l'url), et donc dans ce cas on ne veut pas remonter les relations.
C'est vraiment compliqué et border line à comprendre... Je ne parle même pas des cell.repeat_index entre first_cell et la cellule en cours, faut étudier le code pendant 2h pour comprendre (ça m'a obligé à rajouter un 'or 0' parce qu'en changeant l'ordre d'évaluation on se retrouvait dans un cas sans repeat_index dans le contexte).
Mais donc ok je vais le remettre et modifier un cas de test_card_cell_card_mode_render_identifier_from_related() où effectivement plus aucun appel n'est fait puisque la résolution paresseux et qu'on détecte tout de suite via le test sur la virgule qu'il ne faut pas récupérer les ids.
46ed6fa2aa
to3aaead5504
3aaead5504
to1c242898ed
1c242898ed
to4afe814b2e
J'ai ajouté en premier commit le test pour voir le changement de comportement, sans le deuxième commit, le rendu de la cellule texte slugb génère un appel à w.c.s. pour la résolution des ids de sluga.
4afe814b2e
tocff7542dce
ok, testé en local avec des cellules fiches tableau, avec un filtre de requête pour les ids, et côté wcs un modèle de fiche avec 10000 fiches (pour approcher du cas soumis par Mik)