Development #32013
wcs.api.posted_json_data_to_formdata_data devrait appeler store_display_value et store_structured_value
0%
Description
Si les version _display et _structured d'un ItemField ou d'un ItemsField ne sont pas disponibles dans un submit() il faudrait les récupérer à la source en fonction de l'id
.
Fichiers
Demandes liées
Révisions associées
api: store display/structured on submit of an item field with raw id (#32013)
Historique
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
C'est dans le cadre du connecteur MDEL dans passerelle qui va créer des formulaires dans w.c.s. dont un champ ItemField est lié à une source de donnée passerelle (villes raccordées avec id
étant le code INSEE, text
le nom de la commune).
Mis à jour par Frédéric Péters il y a environ 5 ans
Ça me semble raisonnable. (je vois en passant qu'on ne documente pas les champs liste dans help/fr/api-fill.page).
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Fichier 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch ajouté
- Fichier 0002-api-store-display-structured-on-submit-of-an-item-fi.patch 0002-api-store-display-structured-on-submit-of-an-item-fi.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Reste à voir si ça ne casse rien d'autre.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Fichier 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch ajouté
- Fichier 0002-api-store-display-structured-on-submit-of-an-item-fi.patch 0002-api-store-display-structured-on-submit-of-an-item-fi.patch ajouté
Petite erreur dans l'exemple de la doc entre '{field.id}' et '{field.varname}_raw'.
Mis à jour par Frédéric Péters il y a environ 5 ans
Je n'autoriserais pas l'absence de l'un ou l'autre (_display ou _structured), je les récupérerais uniquement quand aucun des deux n'est défini.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
Frédéric Péters a écrit :
Je n'autoriserais pas l'absence de l'un ou l'autre (_display ou _structured), je les récupérerais uniquement quand aucun des deux n'est défini.
Ce qu'on accepte actuellement:
- varname -> ok
- varname_raw -> erreur
- varname_raw + varname_display -> ok
- varname + varname_structured -> ok (parce que "store_display_value and raw in data)
- varname_raw + varname_display + varname_structured -> ok
Tu me demande d'interdire varname + varname_structured ?
Déjà simplement en ne remplissant les champs quand ils sont tous les deux absents j'en suis là :
--- a/wcs/api.py
+++ b/wcs/api.py
@@ -60,14 +60,20 @@ def posted_json_data_to_formdata_data(formdef, data):
if field.store_structured_value and structured in data:
data['%s_structured' % field.id] = data.pop(structured)
- # parse special fields
+ # complete/adapt field values
for field in formdef.get_all_fields():
- if not hasattr(field, 'from_json_value'):
- continue
+ structured = '%s_structured' % field.id
+ display = '%s_display' % field.id
if data.get(field.id) is None:
continue
- data[field.id] = field.from_json_value(data[field.id])
-
+ if field.store_display_value and display not in data:
+ data[display] = field.store_display_value(data, field.id)
+ if field.store_structured_value and structured not in data:
+ structured_value = field.store_structured_value(data, field.id)
+ if structured_value:
+ data[structured] = structured_value
+ if hasattr(field, 'from_json_value'):
+ data[field.id] = field.from_json_value(data[field.id])
return data
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Fichier 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch ajouté
- Fichier 0002-api-store-display-structured-on-submit-of-an-item-fi.patch 0002-api-store-display-structured-on-submit-of-an-item-fi.patch ajouté
Review please.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Lié à Development #31595: connecteur générique vers service-public.fr/MDEL ajouté
Mis à jour par Nicolas Roche il y a environ 5 ans
- Statut changé de Solution proposée à En cours
J'ai pas encore fini (désolé j'ai du mal)...
Mais j'ai l'impression qu'il y a une typo ici :
display_value = field.store_display_value(data, field.id) if display is not None: data[display] = display_value
J'aurais mis (comme c'est fait pour
structured_value
en dessous) :if display_value is not None:
Mis à jour par Nicolas Roche il y a environ 5 ans
- Statut changé de En cours à Solution validée
Je n'ai encore qu'une vision qui reste très focalisé sur le code modifié seulement,
mais je le valide (moyennant la petite correction pointée précédemment).
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Fichier 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch ajouté
- Fichier 0002-api-store-display-structured-on-submit-of-an-item-fi.patch 0002-api-store-display-structured-on-submit-of-an-item-fi.patch ajouté
- Statut changé de Solution validée à Solution proposée
Bien vu, merci.
Mis à jour par Frédéric Péters il y a environ 5 ans
s/La valeur peut-être/La valeur peut être/
Cette relecture n'est pas exhaustive.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
Mis à jour par Nicolas Roche il y a environ 5 ans
- Statut changé de Solution proposée à En cours
Arf, j'ai effectivement passé sur la doc un peu trop vite.
(elle y était 2 fois, et elle y est encore pour les listes à choix multiples)
La valeur peut-être La valeur peut être
une liste d'identifiant une liste d'identifiantsPersonnellement j'aurais préféré que tu divises l'exemple en deux :
- pour les listes simples
- pour les sources de données
(c'est pas grand chose mais ça simplifie un peu).
- format 1 :
"X": "1", "X_display": "Valeur1", "X_structured: ... // obligatoire
- format 2 :
"Y_raw": "1", "Y": "Valeur1", "Y_structured: ... // facultatif
(en fait je suis toujours par sûr d'avoir bien compris).
Et enfin, dans les explications tu ne mentionnes pas '_display' alors que ça apparaît dans les exemples.
Mis à jour par Nicolas Roche il y a environ 5 ans
- Statut changé de En cours à Solution validée
Vu que cette fois je pense avoir fais le tour, je préfère en fait valider pour ne pas te bloquer.
Stp, essayes-juste de clarifier un peu plus la doc.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Fichier 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch ajouté
- Fichier 0002-api-store-display-structured-on-submit-of-an-item-fi.patch 0002-api-store-display-structured-on-submit-of-an-item-fi.patch ajouté
- Statut changé de Solution validée à Solution proposée
J'ai supprimé les exemples et la description correspondant à l'utilisation des
identifiants numériques des champs puisqu'il est acquis qu'on ne souhaite pas
que les l'utilisent, l'utilisation des varname est obligatoire.
J'ai rapproché les exemples de leur description en les intégrant dans le
contenu de la liste de termes.
J'ai utilisé le noeud <var></var> autour des occurences de varname dans la
description et dans les exemples.
Mis à jour par Frédéric Péters il y a environ 5 ans
le label de la donnée (2x)
Plutôt libellé.
"text": "Valeur1", "foo": "bar", },
La virgule derrière "foo": "bar" n'est pas tolérée.
(moins important mais jusqu'à présent les lignes de documentation étaient wrappées à ~80 caractères).
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Fichier 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch 0001-doc-complete-api-fill.page-about-item-and-items-fiel.patch ajouté
- Fichier 0002-api-store-display-structured-on-submit-of-an-item-fi.patch 0002-api-store-display-structured-on-submit-of-an-item-fi.patch ajouté
Remarques intégrés.
J'ai par ailleurs fait deux autres changements pour mieux coller aux descriptions :- "ValeurX" remplacé par "Libellé X"
- séparation des exemples pour les sources de donnée en deux pour bien séparer le cas simple :
varname: 1
du cas étendu :
varname_raw: 1
varname: "Libellé"
Mis à jour par Nicolas Roche il y a environ 5 ans
- Statut changé de Solution proposée à Solution validée
Merci, c'est plus clair pour moi.
(Ack)
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 048024af935715331beceae8a28f1e50f5356260 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Fri Apr 5 12:00:05 2019 +0200 api: store display/structured on submit of an item field with raw id (#32013) commit 04e06d4e028b73d842947455cc23c74a6ebb8476 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Fri Apr 5 11:08:18 2019 +0200 doc: complete api-fill.page about item and items field (#32013)
Mis à jour par Frédéric Péters il y a environ 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
doc: complete api-fill.page about item and items field (#32013)