Projet

Général

Profil

Bug #42644

export/import de workflow avec gabarit avec juste "True"

Ajouté par Frédéric Péters il y a environ 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
07 mai 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

0001-workflows-make-sure-field-attributions-are-imported-.patch (1,78 ko) 0001-workflows-make-sure-field-attributions-are-imported-.patch Frédéric Péters, 07 mai 2020 22:01
bo.png (21 ko) bo.png Frédéric Péters, 08 mai 2020 00:23

Révisions associées

Révision 252551da (diff)
Ajouté par Frédéric Péters il y a environ 4 ans

workflows: make sure field attributions are imported as strings (#42644)

Historique

#1

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

#3

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).

#4

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.

#5

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.

#6

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)
#7

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

Formats disponibles : Atom PDF