Development #17185
cellule json : possibilité de charger des données depuis plusieurs URL
0%
Description
Genre :
"metro": { "url": "https://.../les-arrets?identifiant=[identifiant]", "more-data": [ {"horaires": {"url": "https://.../les-horaires?identifiant_arret=[identifiant]"}}, ] }
Avec "more-data" étant une liste pour que le contexte puisse être au fur et à mesure alimenté et utilisé dans les appels qui suivent.
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 7 ans
- Fichier 0001-json-cell-add-possibility-to-retrieve-data-from-mult.patch 0001-json-cell-add-possibility-to-retrieve-data-from-mult.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Plutôt qu'un liste de dictionnaires contenant une seule clé contenant un dictionnaire, simplement une liste de dictionnaires avec dedans la clé à utiliser pour poser les données :
"metro": { "url": "https://.../stops?identifier=[identifier]", "additional-data": [ {"key": "schedule", "url": "https://.../schedule?stop_identifier=[identifier]" } ] }
À noter que l'alimentation du contexte avec les nouvelles données n'est pas vraiment utile tant qu'on est limité à de l'ezt simple dans les templates d'URL. (#17184)
Mis à jour par Frédéric Péters il y a presque 7 ans
L'idée c'était qu'on lache l'affaire après une erreur mais c'est vrai qu'on pourrait imaginer ok d'avoir une erreur 404 (genre plusieurs additional-data, .../ligne-metro?id=[id], .../ligne-bus?id=[id], .../ligne-tram?id=[id]).
Mis à jour par Thomas Noël il y a presque 7 ans
Je maintiens que dans le cas d'URL indépendantes, si l'une foire, on devrait quand même tenter les suivantes. Et donc remplacer le break par un continue.
Si les URL sont dépendantes alors ça plantera au niveau de UnknownTemplateVariableError et je pense que c'est bien.
(en parallèle, reflexion à avoir sur le renvoi du json_response.status_code dans le contexte, pour informer quand ce n'est pas 200 ; autre ticket #17688)
Mis à jour par Frédéric Péters il y a presque 7 ans
- Fichier 0001-json-cell-add-possibility-to-retrieve-data-from-mult.patch 0001-json-cell-add-possibility-to-retrieve-data-from-mult.patch ajouté
Voilà avec le continue, par rapport au patch précédent, déplacement de l'affectation au self._json_content dans le corps de la boucle.
Mis à jour par Thomas Noël il y a presque 7 ans
En fait la partie # update context with data key ...
ne sert à rien en dehors du résultat 200 (extra_context[data_key]
est restée à None
dans ce cas), donc j'indenterais bien ces lignes 890 à 896 pour les placer dans le if json_response.status_code == 200:
Mis à jour par Thomas Noël il y a presque 7 ans
- Fichier 0001-json-cell-add-possibility-to-retrieve-data-from-mult.patch 0001-json-cell-add-possibility-to-retrieve-data-from-mult.patch ajouté
Une version avec ce que je dis au dessus, mais aussi un "continue" en cas d'impossibilité de calculer l'URL (on tente quand même les autres).
Mis à jour par Frédéric Péters il y a presque 7 ans
- Fichier 0001-json-cell-add-possibility-to-retrieve-data-from-mult.patch 0001-json-cell-add-possibility-to-retrieve-data-from-mult.patch ajouté
Si la première requête foire, j'ai eu peur que self._json_content = extra_context['json'] plante parce que 'json' ne sera pas dans le dictionnaire. Ce n'est pas le cas tout est bien mis à None plus haut mais il m'a fallu un test pour que je le remarque. Voici donc le même patch + le test allongé pour tester la situation où les URL sont en erreur.
Mis à jour par Frédéric Péters il y a presque 7 ans
- Statut changé de En cours à Résolu (à déployer)
commit 88052430dd1e3d156ec18eef3a815d139b91a7f2 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Jun 26 10:16:37 2017 +0200 json cell: add possibility to retrieve data from multiple URLs (#17185) ex: "metro": { "url": "https://.../stops?identifier=[identifier]", "additional-data": [ {"key": "schedule", "url": "https://.../schedule?stop_identifier=[identifier]" } ] }
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
json cell: add possibility to retrieve data from multiple URLs (#17185)
ex:
"metro": {
"url": "https://.../stops?identifier=[identifier]",
"additional-data": [ {"key": "schedule",
"url": "https://.../schedule?stop_identifier=[identifier]"
}
]
}