Projet

Général

Profil

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

Ajouté par Mikaël Ates (de retour le 29 avril) il y a plus de 3 ans. Mis à jour il y a environ 3 ans.

Statut:
Information nécessaire
Priorité:
Normal
Catégorie:
-
Version cible:
-
Début:
22 janvier 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non
Club:
Non

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/

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 3 ans

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

Mis à jour par Frédéric Péters il y a plus de 3 ans

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

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a plus de 3 ans

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

Mis à jour par Frédéric Péters il y a plus de 3 ans

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

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a environ 3 ans

  • Statut changé de Nouveau à Information nécessaire
  • Assigné à mis à Mikaël Ates (de retour le 29 avril)

Formats disponibles : Atom PDF