Development #32535
Dans wcs.formdata.flatten_dict ne plus supprimer la version non aplatie des données
0%
Description
Dans #32403 on se met à vouloir extraire plusieurs fichiers contenu dans une réponse JSON or les réponses de WS ne sont disponibles que via la donnée non structurée workflow_data
qui se retrouve dans les variables de substitution après un passage par flattent_dict
qui supprime toute structure, donc si on a un dico au format {filename:..,b64_content:} on ne peut pas l'exploiter directement (mais ce serait pareil pour d'autres structures genre {lat:.., lon:..} on est obligé de la reconstruire.
À mon avis l'aplatissement des données a perdu de son intérêt depuis qu'on fait du Django, on pourrait se permettre d'avoir les deux ensembles de clés en parallèle, via peu ou prou ce patch :
--- a/wcs/formdata.py +++ b/wcs/formdata.py @@ -92,13 +92,14 @@ def get_dict_with_varnames(fields, data, formdata=None, varnames_only=False): new_data['var_%s_%s_%s' % (field.varname, i, k)] = v return new_data + def flatten_dict(d): for k, v in d.items(): - if type(v) is dict: + if isinstance(v, dict): flatten_dict(v) for k2, v2 in v.items(): - d['%s_%s' % (k, k2)] = v2 - del d[k] + if not isinstance(v2, dict): + d['%s_%s' % (k, k2)] = v2 def get_json_dict(fields, data, include_files=True, anonymise=False):
Demandes liées
Historique
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Lié à Development #32403: Enregistrement de pièces jointes à l'historique via RegisterComment ajouté
Mis à jour par Frédéric Péters il y a presque 5 ans
Je serais pour que flatten_dict() continue à faire ce que son nom implique.
Et que si quelque part on veut fournir à la fois une version aplatie et une version pas aplatie, ça peut se faire de manière explicite (en ne zappant pas le copy.deepcopy).
Mais je suis très frileux autour de tout ça.