Bug #42644
export/import de workflow avec gabarit avec juste "True"
0%
Description
Ça va être pris au chargement de l'xml comme du booléen et ça va amener à un moment une trace comme
Exception: type = '<class 'AttributeError'>', value = ''bool' object has no attribute 'startswith'' Stack trace (most recent call first): File "/usr/lib/python3/dist-packages/wcs/workflows.py", line 1887, in get_expression 1885 expression_type = 'text' 1886 expression_value = '' > 1887 elif var.startswith('='): 1888 expression_type = 'python' 1889 expression_value = var[1:] locals: cls = <class 'wcs.workflows.WorkflowStatusItem'> var = True
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a environ 4 ans
- Fichier 0001-workflows-make-sure-field-attributions-are-imported-.patch 0001-workflows-make-sure-field-attributions-are-imported-.patch ajouté
- Sujet changé de export/import de workflow avec gabarit avec juste "true" à export/import de workflow avec gabarit avec juste "True"
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a environ 4 ans
(relu, je n'ai pas du tout compris ce que ça corrige... « 'value': 'True' » : je ne comprends pas l'idée derrière ce test).
Mis à jour par Frédéric Péters il y a environ 4 ans
cf capture pour l'action en question.
ça se trouve sérialisé en XML pour l'export, en <value>True</value>
mais à la désérialisation, quand le type attendu est inconnu, un True se trouve lu comme étant un booléen, dans wcs/workflows.py :
elif el.text in ('False', 'True') and not isinstance(getattr(self, attribute), six.string_types): # booleans setattr(self, attribute, el.text == 'True') ... else: setattr(self, attribute, xml_node_text(el))
De là ce patch, qui assure que field_id et value seront initialisés en tant que chaines de caractères, ce qui assurera que l'attribut soit posé en tant que chaine.
Mis à jour par Thomas Noël il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Haannnn... True en tant que texte ; presqu'une erreur de config, en fait. J'ai enfin pigé.
Et donc sur le « rule.get('value') or '' » je comprends maintenant que c'est pour gérer le cas du init avec rule={}... Je me demandais où tu "assurais que c'est une string" avec ça, parce que je rêvais un rule['value'] à True mais ce n'est pas du tout ça. Ça m'aurait peut-être plus parlé écrit « rule.get('value', '') » mais je vais pas faire mon tatasse.
Allez maintenant que j'ai fini de raconter ma vie et mes labyrinthes, je acke.
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 252551daba795b921f65da2c727bc75254d92faa Author: Frédéric Péters <fpeters@entrouvert.com> Date: Thu May 7 22:00:43 2020 +0200 workflows: make sure field attributions are imported as strings (#42644)
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
workflows: make sure field attributions are imported as strings (#42644)