Project

General

Profile

Bug #13783

modifier un champs backoffice type fichier : erreur sur valeur None

Added by Thomas Noël almost 5 years ago. Updated almost 5 years ago.

Status:
Fermé
Priority:
Normal
Assignee:
Target version:
Start date:
27 Oct 2016
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
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>

Files

Associated revisions

Revision 8b6b6c66 (diff)
Added by Thomas Noël almost 5 years ago

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

History

#1

Updated by Thomas Noël almost 5 years ago

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

Updated by Thomas Noël almost 5 years ago

  • Status changed from Nouveau to En cours
  • Assignee set to Thomas Noël
  • Patch proposed changed from No to Yes
#3

Updated by Frédéric Péters almost 5 years ago

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

Updated by Thomas Noël almost 5 years ago

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

Updated by Frédéric Péters almost 5 years ago

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

#6

Updated by Thomas Noël almost 5 years ago

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

Updated by Thomas Noël almost 5 years ago

  • Status changed from En cours to Résolu (à déployer)
#8

Updated by Frédéric Péters almost 5 years ago

  • Target version set to v1.64
#9

Updated by Frédéric Péters almost 5 years ago

  • Status changed from Résolu (à déployer) to Fermé

Also available in: Atom PDF