Projet

Général

Profil

Development #17185

cellule json : possibilité de charger des données depuis plusieurs URL

Ajouté par Frédéric Péters il y a presque 7 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
26 juin 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision 88052430 (diff)
Ajouté par Frédéric Péters il y a presque 7 ans

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]"
}
]
}

Historique

#1

Mis à jour par Frédéric Péters il y a presque 7 ans

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)

#2

Mis à jour par Thomas Noël il y a presque 7 ans

Pourquoi un break ligne 888 ?

#3

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]).

#4

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)

#5

Mis à jour par Frédéric Péters il y a presque 7 ans

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.

#6

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:

#7

Mis à jour par Thomas Noël il y a presque 7 ans

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).

#8

Mis à jour par Frédéric Péters il y a presque 7 ans

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.

#9

Mis à jour par Thomas Noël il y a presque 7 ans

Ack

#10

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]" 
           }
        ]
      }
#11

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

Formats disponibles : Atom PDF