Projet

Général

Profil

Bug #26269

suspicion de crash dans get_global_eval_dict

Ajouté par Thomas Noël il y a plus de 5 ans. Mis à jour il y a plus de 5 ans.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Sur une évaluation de champs de traitement de la sorte :

vars().get('xxx') or vars().get('yyy')

j'obtiens ce log dans le workflow :

TypeError: string indices must be integers, not str

plutôt étrange, du moins qui n'est pas directement liée à l'évaluation.

A regarder le code de wf/backoffice_fields puis de compute, je finis dans get_global_eval_dict où j'ai l'impression que le nouveau vars': compat_locals, pourrait être la cause de cette trace.


Fichiers

Révisions associées

Révision 2e3df87a (diff)
Ajouté par Frédéric Péters il y a plus de 5 ans

tests: check vars() wrapper used on backoffice fields (#26269)

Révision e9c12495 (diff)
Ajouté par Frédéric Péters il y a plus de 5 ans

tests: add check for vars() and missing form_var_ (#26269)

Révision 4af9f767 (diff)
Ajouté par Frédéric Péters il y a plus de 5 ans

tests: add check for vars().get(...) default value (#26269)

Révision 6a05724c (diff)
Ajouté par Frédéric Péters il y a plus de 5 ans

misc: fix behaviour on missing variables with a known prefix (#26269)

Historique

#1

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

Sans doute, oui.

#2

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

Il y a une trace quelque part avec le détail ? (pas trouvé)

#4

Mis à jour par Thomas Noël il y a plus de 5 ans

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

Il y a une trace quelque part avec le détail ? (pas trouvé)

Aucune trace, juste des logs, c'est sans doute ça qui nous a fait rater l'affaire (except:continue)

#5

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

Pour info je viens d'ajouter un test, qui passe :

+    item.fields = [{'field_id': 'bo1', 'value': '=vars().get("form_var_string") + " PLOP"'}]
+    item.perform(formdata)
+    formdata = formdef.data_class().get(formdata.id)
+    assert formdata.data['bo1'] == 'HELLO PLOP'
#6

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

formdata = ...
get_publisher().substitutions.feed(formdata)
...
pub.substitutions.get_context_variables().get('form_var_nom_autre_professionnel')
TypeError                                 Traceback (most recent call last)
/usr/lib/python2.7/dist-packages/wcs/ctl/shell.pyc in <module>()
----> 1 pub.substitutions.get_context_variables().get('form_var_nom_autre_professionnel')

/usr/lib/python2.7/dist-packages/wcs/qommon/substitution.pyc in get(self, key, default)
    130     def get(self, key, default=None):
    131         try:
--> 132             return self.__getitem__(key)
    133         except KeyError:
    134             return default

/usr/lib/python2.7/dist-packages/wcs/qommon/substitution.pyc in __getitem__(self, key)
    148                             current_dict = dict.__getitem__(current_dict, part)
    149                         elif hasattr(current_dict, '__getitem__'):
--> 150                             current_dict = current_dict[part]
    151                         else:
    152                             current_dict = getattr(current_dict, part)

TypeError: string indices must be integers, not str
#7

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

Ce qui se passe , vars().get('form_var_nom_autre_professionnel')

pub.substitutions.get_context_variables().get('form_var_nom') → 'ALAVOINE', et derrière 'ALAVOINE'['autre_professionnel'] et le crash là.

#8

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

#9

Mis à jour par Thomas Noël il y a plus de 5 ans

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

Mis à jour par Thomas Noël il y a plus de 5 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 6a05724c8ed689109d1f311b989cbdec743f00cc
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Mon Sep 10 11:45:39 2018 +0200

    misc: fix behaviour on missing variables with a known prefix (#26269)

#12

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