Projet

Général

Profil

Development #62109

Message d'erreur lors d'un mauvais import d'un bloc de champ

Ajouté par Marie Kuntz il y a environ 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
23 février 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non
Tags:

Description

J'ai essayé d'importer un formulaire dans la page des blocs de champs (oui, bon...) et j'ai eu une erreur "Fichier invalide (Élément racine inattendu)", qui n'est pas très explicite.
Il faudrait avoir un message plus parlant, par exemple "tu es vraiment trop stupide, tu as essayé d'importer un formulaire comme bloc de champ" (suggestion ouverte aux propositions alternatives).


Fichiers

Révisions associées

Révision 51777d27 (diff)
Ajouté par Corentin Séchet il y a environ 2 ans

backoffice: report expected XML node in invalid XML import messages (#62109)

Historique

#1

Mis à jour par Thomas Noël il y a environ 2 ans

  • Tags mis à accessible
#2

Mis à jour par Corentin Séchet il y a environ 2 ans

  • Assigné à mis à Corentin Séchet
#3

Mis à jour par Corentin Séchet il y a environ 2 ans

#4

Mis à jour par Corentin Séchet il y a environ 2 ans

  • Assigné à changé de Corentin Séchet à Benjamin Dauvergne

J'ai été un peu plus poli et j'ai mis le nom du tag incorrect dans le message d'erreur, par souci de simplicité. On aura donc "Le fichier fourni n'est pas un bloc de champs mais un <workflow / form>".

#5

Mis à jour par Corentin Séchet il y a environ 2 ans

  • Assigné à changé de Benjamin Dauvergne à Corentin Séchet
#6

Mis à jour par Thomas Noël il y a environ 2 ans

Ca manque de tests :)

Mais surtout, on aura un soucis après traduction, l'erreur affichée sera du genre « Le fichier reçu n'est pas un formulaire, mais semble être de type "block" » au lieu de « ... de type "bloc de champs" ». Il faudrait quelque chose comme XML_ROOT_NODE_NAME.get(tree.tag, _('%s (unknown)') % tree.tag) à la place de tree.tag.

Ca serait mieux aussi de ne pas changer la ligne « if tree.tag != 'workflow': » : les patches les moins longs sont les meilleurs.

#7

Mis à jour par Corentin Séchet il y a environ 2 ans

J'avais pensé à utiliser l'attribut de classe 'verbose_name' sinon pour avoir un nom localisé, mais il est défini sur FormDef uniquement, je peux l'ajouter sur BlockDef & Workflow ?

#8

Mis à jour par Thomas Noël il y a environ 2 ans

Corentin Séchet a écrit :

J'avais pensé à utiliser l'attribut de classe 'verbose_name' sinon pour avoir un nom localisé, mais il est défini sur FormDef uniquement, je peux l'ajouter sur BlockDef & Workflow ?

Bonne idée !

#9

Mis à jour par Thomas Noël il y a environ 2 ans

Discussions en parallèle, tout ça est un peu too much par rapport au but recherché, on pourrait rester sur un message simple :

"Votre fichier XML n'est pas du type attendu, il commence par une balise <%(seen)s> au lieu de <%(expected)s>" % {'seen': tree.tag, 'expected': cls.xml_root_node}

ça donnera <form> ou <workflow>, c'est compréhensible à ce niveau d'utilisation de Publik.

#11

Mis à jour par Frédéric Péters il y a environ 2 ans

wcs: Improved error reporting when importing a file of the wrong type (#62109)

(sans lire le code)

Sur la forme des messages on ne met pas l'application concernée en préfixe, ici c'est une modif qui relève plutôt du backoffice, on prendrait plutôt ça comme préfixe. (il a pu être simplifié à un moment le choix du préfixe à quelque chose en rapport avec le répertoire où se trouve le fichier, ça n'est pas correct).

Aussi, on essaie de tenir sous 80 caractères, et on n'utilise pas de participe passé.

Ici par exemple on pourrait avoir backoffice: report expected XML node in invalid XML import messages (#.....)

Sur le code, XML doit être en majuscules dans les messages, "doesn't seems" n'est pas correct (et le plus simple "is not" serait correct). Surtout "to be a form definition" va s'afficher aussi pour les modèles de fiches.

#13

Mis à jour par Corentin Séchet il y a environ 2 ans

J'ai modifié en affichant le tag attendu, pour que ça fonctionne pour les modèles de fiche.

#14

Mis à jour par Thomas Noël il y a environ 2 ans

J'arrive pour jouer les pénibles sur deux détails :

Pour factoriser la traduction, tu pourrais utiliser la même "Provided XML file is invalid, it starts with a <%(seen)s> tag instead of <%(expected)s>" au niveau de l'import des workflows.

Ensuite, dans les tests, fait un assert sur le message complet « assert excinfo.value.msg == "Provided ..." ». Aussi, ajouter un test de CardDef.import_from_xml(io.BytesIO(export)) pour ainsi faire de tous les 4 cas possibles (blocs, formulaire, workflow et donc, modèle de fiche).

Avec ça, je pense pouvoir promettre que ça va être un ack :-)

#16

Mis à jour par Thomas Noël il y a environ 2 ans

  • Statut changé de Solution proposée à Solution validée

A pousser dès que Jenkins est vert !

#17

Mis à jour par Corentin Séchet il y a environ 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
#18

Mis à jour par Transition automatique il y a environ 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#19

Mis à jour par Transition automatique il y a presque 2 ans

Automatic expiration

Formats disponibles : Atom PDF