Projet

Général

Profil

Bug #13783

modifier un champs backoffice type fichier : erreur sur valeur None

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Début:
27 octobre 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Sur un champs backoffice de type fichier, affecter une valeur vide (photo non obligatoire, par exemple) => None => Crash.

Exception:
  type = '<type 'exceptions.ValueError'>', value = 'invalid data for file type (None)'

Stack trace (most recent call first):
  File "/usr/lib/python2.7/dist-packages/wcs/wf/backoffice_fields.py", line 114, in get_file_value
   112                 return upload
   113
>  114         raise ValueError('invalid data for file type (%r)' % new_value)
   115
   116     def perform(self, formdata):

  locals:
     new_value = None
     self = <wcs.wf.backoffice_fields.SetBackofficeFieldsWorkflowStatusItem object at 0x57e0ed0>

  File "/usr/lib/python2.7/dist-packages/wcs/wf/backoffice_fields.py", line 136, in perform
   134                     new_value = self.get_file_value(new_value)
   135             except ValueError:
>  136                 get_publisher().notify_of_exception(sys.exc_info())
   137                 continue
   138

  locals:
     self = <wcs.wf.backoffice_fields.SetBackofficeFieldsWorkflowStatusItem object at 0x57e0ed0>
     field = {'field_id': 'bo17', 'value': '=visite_var_photo2'}
     x = <wcs.fields.TextField object at 0x59f0690>
     new_value = None
     formdef_field = <wcs.fields.FileField object at 0x59f0310>
     formdata = <Demande-De-Proximite 'Demande de proximit\xc3\xa9 - n\xc2\xb01-17' id:17>

Fichiers

Révisions associées

Révision 8b6b6c66 (diff)
Ajouté par Thomas Noël il y a plus de 7 ans

workflows: allow None in file backoffice fields (#13783)

Historique

#1

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

En fait ça ne marche pas comme ça. Dans la trace ci-dessus on utilise =visite_var_photo2, mais c'est =visite_var_photo2_raw qu'il faut en vrai pour attribuer un fichier. Or, quand y'a pas de fichier, cette variable raw n'existe pas, on aura donc toujours un crash lors du eval qui précède.

Pour par crasher le var, il faut donc un moche « =locals().get('truc_raw') », et dans ce cas, voici le patch.

#2

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

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Thomas Noël
  • Patch proposed changé de Non à Oui
#3

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

Ou =visite_var_photo2_raw if visite_var_photo2 else None. Mais question, ça aurait pas du sens de simplement poser un _raw à None ?

#4

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

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

Ou =visite_var_photo2_raw if visite_var_photo2 else None.

Sans doute plus clair, sauf que visite_var_photo2 n'existe pas forcément non plus.

[ Tiens, ça fait penser à un « if_then_else(condition, val_then, val_else=None) » dans eval_utils ]

Mais question, ça aurait pas du sens de simplement poser un _raw à None ?

Quand la variable n'existe pas du tout, y'aura pas de raw non plus.

Mais par ailleurs oui, ça aurait l'avantage majeur de nettoyer les variables posées dans workflow_data, qui sont parfois pas bien claire. Mais c'est pas une petite modification (et ça ne changerait pas ce patch, je crois).


Bon, on n'arrivera jamais à faire des choses propres en continuant à autoriser du Python.

#5

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

Ack sur celui-ci et les considérations plus lointaines on ne les oubliera pas.

#6

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

commit 8b6b6c667d62048652f01e52e10e434c0e9bc7df
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Fri Oct 28 12:07:07 2016 +0200

    workflows: allow None in file backoffice fields (#13783)

#7

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

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

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

  • Version cible mis à v1.64
#9

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

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

Formats disponibles : Atom PDF