Projet

Général

Profil

Development #23511

information "description sommaire" d'un formdata

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
30 avril 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Il y aurait souhait de remonter dans les demandes en cours de l'utilisateur "un peu plus que le nom/numéro du formulaire", genre pour un signalement le type de celui-ci, pour une demande d'acte la personne concernée, pour un permis de construire l'adresse, etc.

Ça pourrait être une donnée de traitement à l'identifiant particulier (magie, mais on a toute l'infra pour), ou un paramètre du formdef (mais à créer et moins souple), ou autre chose encore. (?)


Fichiers


Demandes liées

Lié à w.c.s. - Development #23525: Inclure les données de traitement dans l'API user/formsFermé02 mai 2018

Actions

Révisions associées

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

general: add support for a stored digest value on formdatas (#23511)

Historique

#1

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

Frédéric Péters a écrit :

Ça pourrait être une donnée de traitement à l'identifiant particulier (magie, mais on a toute l'infra pour), ou un paramètre du formdef (mais à créer et moins souple), ou autre chose encore. (?)

Pour moi, plutôt un paramètre du formdef, qui sera par défaut vide, et qui est un template sur le formdata. Lors du formdata.store() on recalcule sa description.

Je pensais que à quelque chose comme formdef.get_display_id_format() (qui n'a jamais été très loin). Quand la description existe elle est utilisée par formdata.get_display_name() ; sinon on reste sur "name #id"

Use case sympas : « Demande de réservation AquaGym du vendredi soir pour Francis Kunz (n°123-33) », « Demande d'inscription scolaire de Sidonie », etc. A noter que je pense à un remplacement du nom de la demande partout où il est affiché, en frontoffice comme en backoffice.

#2

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

De mon côté c'est une information qui doit venir en plus de ce qu'on a déjà (nom du formdef / identifiant du formdata). (parce que visuellement ça doit ensuite être présenté différemment).

#3

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

Et pour rappeler un problème du display_id, le problème de poser cette info au niveau du formdef, c'est qu'il est attendu (était attendu pour le display_id) qu'un changement touche l'ensemble des demandes existantes. (ce qui peut aussi être vu comme un avantage mais complique davantage encore l'affaire).

#4

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

  • Assigné à mis à Frédéric Péters
#5

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

Paramétrage au niveau du formulaire, structuré pour s'approcher de ce qui se fait pour le display_id; prévu aussi pour évoluer pour terminer le travail sur le display_id et le rendre paramétrable, une fois celui-ci traité correctement (ex: #23517)), prévu aussi dans la suite pour également se permettre un template supplémentaire plus long, genre "description" qui pourrait être repris en description de la sortie ics.

#6

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

Frédéric Péters a écrit :

(...) repris en description de la sortie ics.

Et la sortie geojson, tiens.

#7

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

En première lecture, ce qui manque, je trouve, c'est de voir dans l'UI (hors de l'API) la possibilité d'usage de ce "digest". Je serais pour au moins afficher form_digest dans la liste des variables disponibles, dans les Substitutions.register de formdata.py ; et que ça soit '' et pas None ('form_digest': self.digest or ''). Si possible mettre à jour help/fr/api-user.page et help/fr/misc-substvars.page.

Pour l'instant je n'ai pas d'idée d'un autre affichage utile dans l'UI, mais il faudrait y penser, peut-être dans l'interface de traitement, afin que cette fonctionnalité ne devienne pas juste un gadget auquel on ne pense que dans des usages "tordus". Par exemple pourquoi ne pas afficher ce digest comme résumé de la demande lorsque celui-ci est replié. Bref, si tu as souvenir de la demande initiale de « Il y aurait souhait de remonter ... » comme tu dis dans le ticket.

#8

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

[...] moins afficher form_digest dans la liste des variables disponibles,

Quand un template a été défini (avantage il y aura quelque chose dans la variable) ou tout le temps (avantage ça montre que ça existe) ?

Bref, si tu as souvenir de la demande initiale de « Il y aurait souhait de remonter ... » comme tu dis dans le ticket.

Très simple, dans les dernières maquettes GNM, dans les demandes en cours, pour un permis de construire on affiche à côté l'adresse.

~~

Cela étant pour GNM il me revient que ça ne sera pas suffisant, que j'ai réuni deux besoins, on voudrait aussi remonter (dans la liste des demandes ouvertes) une autre info disponible en donnée de traitement; et j'en viens à me dire que plutôt, modifier l'API pour qu'elle retourne de manière systématique toutes les variables de traitement, ça ferait le taf attendu. À suivre.

#9

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

  • Lié à Development #23525: Inclure les données de traitement dans l'API user/forms ajouté
#10

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

Frédéric Péters a écrit :

Cela étant pour GNM il me revient que ça ne sera pas suffisant, que j'ai réuni deux besoins, on voudrait aussi remonter (dans la liste des demandes ouvertes) une autre info disponible en donnée de traitement; et j'en viens à me dire que plutôt, modifier l'API pour qu'elle retourne de manière systématique toutes les variables de traitement, ça ferait le taf attendu. À suivre.

Si le digest est (re)calculé à chaque formdata.store() il suffit d'y inclure le {{form_var_donnee_de_traitement|default:"encore inconnu"}} concerné, non ?

#11

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

Si le digest est (re)calculé à chaque formdata.store() il suffit d'y inclure le {{form_var_donnee_de_traitement|default:"encore inconnu"}} concerné, non ?

Si on a besoin d'une seule donnée, oui; le truc étant de remonter deux infos, genre le type de signalement et la commune qui assure le traitement.

#13

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

Pour l'instant je n'ai pas d'idée d'un autre affichage utile dans l'UI, mais il faudrait y penser, peut-être dans l'interface de traitement, afin que cette fonctionnalité ne devienne pas juste un gadget auquel on ne pense que dans des usages "tordus". Par exemple pourquoi ne pas afficher ce digest comme résumé de la demande lorsque celui-ci est replié. Bref, si tu as souvenir de la demande initiale de « Il y aurait souhait de remonter ... » comme tu dis dans le ticket.

Discuté au bureau et patch mis à jour pour reprendre cette information dans le listing global et dans le bloc "demandes de l'usager" de la barre latérale (pour cette partie, ça vient après #22105).

#16

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

Dans set_auto_fields, un cas limite, si on utilise {{form_number}} dans le digest, mais qu'on redéfini aussi id_display, alors self.get_substitution_variables() ne sera pas bon. Pour ça il faudrait calculer d'abord self.id_display puis le digest à partir des nouvelles variables de subst... Bref, on s'interdit à mon sens d'utiliser form_number dans le digest. Je ne sais pas si c'est grave.

Pour le mode pickle, afficherait-on un message "Existing forms are not updated" ?

Dans l'idée qu'on aurait bientôt aussi des templates pour geojson, geojson_frontoffice, ics, ... : est-ce qu'on ne voudrait pas partir comme pour la geolocalisation, avec un formdef.templates qui serait un dico, construisant autant de colonnes que nécessaires ?

#17

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

Bref, on s'interdit à mon sens d'utiliser form_number dans le digest. Je ne sais pas si c'est grave.

Je dirais que non, pas grave, parce que le numéro on le reprend déjà indépendamment dans les différents endroits.

Pour le mode pickle, afficherait-on un message "Existing forms are not updated" ?

Pourquoi pas, oui.

(...) formdef.templates qui serait un dico, construisant autant de colonnes que nécessaires.

Ça me va plutôt de faire des attributs distincts.

#18

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

Frédéric Péters a écrit :

Bref, on s'interdit à mon sens d'utiliser form_number dans le digest. Je ne sais pas si c'est grave.

Je dirais que non, pas grave, parce que le numéro on le reprend déjà indépendamment dans les différents endroits.

Ça roule ; ce n'est rien d'impossible à corriger au cas où.

Pour le mode pickle, afficherait-on un message "Existing forms are not updated" ?

Pourquoi pas, oui.

Au plaisir de voir ça.

(...) formdef.templates qui serait un dico, construisant autant de colonnes que nécessaires.

Ça me va plutôt de faire des attributs distincts.

Ok aussi (pour la geoloc on imaginait permettre à terme le stockage de différentes géoloc selon les données et/ou le workflow ; ce n'est pas le cas ici, les templates seront tous toujours dispo partout).

#20

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

Encore une inquiétude cependant, sur le cas suivant:
  • un «digest» qui fait un appel webservice, 1 ou 2 secondes
  • un formulaire qui a une démarche avec des milliers de demandes... mais quasi toutes anonymisées (et qui resteront là ad-vitam, sur 2 ou 3 ans, pour cause de stat)
    et dans ce cas, le premier cron va passer quelques heures bloqué sur cette reindexation.

Je me demande si on ne devrait pas limiter la re-indexation aux demandes non anonymisées ? Ça peut faire l'objet d'un autre ticket/patch (quoique c'est bien lié à cette arrivée d'un template calculé lors du store(), qui peut potentiellement fortement ralentir la réindexation).


Ultra détail sans conséquence, juste pour montrer que je relis, dans le test, des digest_template = 'digest of number {{form_number}}' mais comme évoqué plus haut, et même si on peut se le permettre dans le test, form_number devra éviter de se retrouver dans un digest. Voilà, j'arrête de pinailler.


This change will be applied to new and modified forms. → ... only applied to ... ?


Number → Reference, ok, passons ça ici.


Bref, ack, avec ces petits trucs ou pas.

#21

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

  • Statut changé de En cours à Résolu (à déployer)

Quelques commentaires quand même.

un «digest» qui fait un appel webservice, 1 ou 2 secondes

Faut déconseiller, voire interdire, ça. (mais je ne mettrais pas de code pour l'interdire effectivement, tant que personne n'a cette drôle d'idée).

form_number devra éviter de se retrouver dans un digest

Oui, c'était juste une variable du formulaire très facile à obtenir pour le test.

This change will be applied to new and modified forms. → ... only applied to ... ?

J'avais "only", je l'ai retiré, pour limiter le négatif. (même si en pratique personne ne verra ce message)

Et poussé ainsi,

commit c6cad6591f3d752e83e953e1386918bcf55aa495
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Tue May 1 11:30:43 2018 +0200

    general: add support for a stored digest value on formdatas (#23511)
#22

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