Projet

Général

Profil

Development #32535

Dans wcs.formdata.flatten_dict ne plus supprimer la version non aplatie des données

Ajouté par Benjamin Dauvergne il y a presque 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
23 avril 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

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

Lié à w.c.s. - Development #32403: Enregistrement de pièces jointes à l'historique via RegisterCommentFermé16 avril 2019

Actions

Historique

#1

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Description mis à jour (diff)
#2

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Lié à Development #32403: Enregistrement de pièces jointes à l'historique via RegisterComment ajouté
#3

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.

#4

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Statut changé de Nouveau à Rejeté

No soucy.

Formats disponibles : Atom PDF