Project

General

Profile

Support #50464

Obtenir les données fraîches d'une fiche depuis une autre fiche et filtrer les fiches sur l'identifiant d'une fiche

Added by Mikaël Ates 6 months ago. Updated 6 months ago.

Status:
Information nécessaire
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
22 Jan 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No
Club:
No

Description

J'utilise deux modèles de fiche :

Le premier modèle possède un champs description.
Le seconde modèle a l'option "Lien avec un usager" configurée sur "Optionnel" et un champs liste organisation sourcé sur les fiches Organisations.

(Cela donne https://demarches-validation.test.entrouvert.org/backoffice/data/organisation/8/)

Je souhaite pouvoir accéder à la description de l'organisation en faisant une requête sur les fiches de liens :
{{ cards|objects:"lien-organisation"|current_user|filter_by:"organisation"|filter_value:"8"|first|get:"organisation"|get:"description" }}

Le soucis c'est que l'Organisation pointée par la fiche Lien organisation semble être une "copie" qui ne se met pas à jour lorsque la fiche Organisation est mise à jour. J'obtiens donc une valeur de description obsolète (datant de la création du lien).

Lors d'un appel sur l'API : {{ eservices_url }}api/cards/lien-organisation/list?NameID={{ user_nameid }}&filter-user-uuid={{ user_nameid }}&full=on même constat.

Y-a-t'il un moyen d'obtenir des données fraîches sur une fiche organisation en passant par une fiche lien organisation ?

A défaut j'ai tenté de requêter directement l'organisation. Mais "dans ce sens" je n'ai que l'identifiant de l'organisation et je n'ai pas trouvé le moyen de filtrer sur l'identifiant de la fiche. J'ai essayé avec filter_by sur id, internal_id, number_raw, par exemple :
{{ cards|objects:"organisation"|filter_by:"number_raw"|filter_value:"8"|first|get:"description" }}

Est-ce que c'est possible de filtrer les fiches sur l'identifiant d'une fiche ?

A défaut je duplique l'identifiant dans une donnée de traitement (https://demarches-validation.test.entrouvert.org/backoffice/workflows/82/status/recorded/) sur laquelle je filtre :
https://demarches-validation.test.entrouvert.org/backoffice/forms/187/fields/1/

History

#1

Updated by Frédéric Péters 6 months ago

Obtenir les données fraiches ça se fait via l'accès par les propriétés live.

Désolé on n'a pas encore de bon moyen pour communiquer d'un coup d'œil une structure et je ne peux pas comprendre la tienne de ton message. (et je demanderais bien un contexte plus général pour savoir par exemple où tu voudrais faire ça, pour comprendre davantage, mais ça ne donnerait en fait que davantage encore à comprendre, pas jouable).

Sans doute sur des tickets comme ça il serait quand même peut-être utile de mettre un lien vers un inspect, pour avoir directement un endroit où malgré tout tenter de comprendre des choses.

Je comprends que tu ne passes pas par des champs (de type liste); je ne sais pas pourquoi.

Je pense qu'il faut commencer à considérer des interventions dès le moment où il est imaginé nécessaire d'utiliser des requêtes, que c'est en fait quelque chose à éviter. La structure des liens entre fiches s'établit à travers des champs (de type liste), passer par des requêtes ailleurs déstructure.

Voilà j'écris donc ça sans comprendre.

#2

Updated by Frédéric Péters 6 months ago

Pour tenter de déconstruire,

{{ cards|objects:"lien-organisation"|current_user|filter_by:"organisation"|filter_value:"8"|first|get:"organisation"|get:"description" }}

Il y a toute une première partie

cards|objects:"lien-organisation"|current_user|filter_by:"organisation"|filter_value:"8"|first

qui devrait juste être "avoir un champ liste avec la fiche "lien organisation" souhaitée sélectionnée.

Et de là, s'il était nommé lien_orga, on aurait form_var_lien_orga_live_var_organisation_description (peut-être, j'écris toujours sans avoir d'inspect pour m'assurer de la syntaxe).

Mais faisons sans ça et avec la requête, (parce que je viens de me rendre compte d'un truc qui simplifie les choses),

Après

cards|objects:"lien-organisation"|current_user|filter_by:"organisation"|filter_value:"8"|first

tu fais

|get:"organisation"|get:"description"

qui te donnent bout par bout des trucs.

Ce qu'il faut plutôt, c'est considérer que ta première partie te donne un objet, à utiliser comme tel, dans sa globalité, et faire :

|get:"form_var_organisation_live_var_description"

Ici aussi pareil sans inpect ce n'est pas nécessairement ça, mais c'est l'idée : exploiter l'objet plutôt que le démonter petit à petit.

#3

Updated by Mikaël Ates 6 months ago

Je comprends que tu ne passes pas par des champs (de type liste); je ne sais pas pourquoi.

Si si je passe pas un champs de type liste : https://demarches-validation.test.entrouvert.org/backoffice/forms/187/fields/2/

Mais je passe par une source de donnée manuelle tapant sur l'API fiche pour pouvoir filtrer sur l'usager : https://demarches-validation.test.entrouvert.org/backoffice/forms/data-sources/17/

Dans ce cas je me rends compte qu'il n'y a pas de _live_ disponible.

Pour avoir du live sur une SD filtrée sur les usagers, il faudra sûrement #50460 ou #50459.

J'ai modifié le formulaire pour utiliser la SD générée automatique et avoir du live pour tester.

Par exemple sur la demande suivante : https://demarches-validation.test.entrouvert.org/backoffice/management/modifier-une-organisation/88/inspect :

  • {{ form_var_lien_organisation_live_var_organisation_description }} : "Radio libre". KO
  • {{ form_var_lien_organisation_live_var_organisation_live_var_description }} : "Radio libre. Et Belge. Et de Navarre." OK
  • {{ form_var_lien_organisation|get:"form_var_organisation_live_var_description" }} "None" : KO

Est-ce que ce constat te paraît correct ?

#4

Updated by Frédéric Péters 6 months ago

Oui; si l'interrogation est sur la dernière, |get:"form_var_organisation_live_var_description", ça va marcher quand c'est appelé sur l'objet en lui-même (form_var_lien_organisation est juste sa représentation sous forme de chaine); l'attribut "live" est en fait l'objet en lui-même, donc ceci serait ok :

{{ form_var_lien_organisation_live|get:"form_var_organisation_live_var_description"}}

(mais n'a pas tellement d'utilité par rapport à la forme précédente).

#5

Updated by Mikaël Ates 6 months ago

  • Assignee set to Mikaël Ates
  • Status changed from Nouveau to Information nécessaire

Also available in: Atom PDF