Bug #46937
le nettoyage des fichiers inutilisés parcourt trop naïvement workflow_data
Début:
24 septembre 2020
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Oui
Planning:
Non
Description
Exception: type = '<class 'AttributeError'>', value = ''str' object has no attribute 'values'' Stack trace (most recent call first): File "/usr/lib/python3/dist-packages/wcs/formdef.py", line 1631, in accumulate_filenames 1629 elif isinstance(field_data, dict) and isinstance(field_data.get('data'), list): 1630 for subfield_rowdata in field_data.get('data'): > 1631 for field_data in subfield_rowdata.values(): 1632 if is_upload(field_data): 1633 yield field_data.get_fs_filename() locals: CardDef = <class 'wcs.carddef.CardDef'> field_data = {'data': ['CARTE', '0', ''], 'err': 0} formdef = <FormDef "Demander un badge d'accès en déchèterie" id:241> is_attachment = <function clean_unused_files.<locals>.is_attachment at 0x7f5c58f69f28> is_upload = <function clean_unused_files.<locals>.is_upload at 0x7f5c58f69ea0> option_data = 'demande de badge' part = <wcs.wf.register_comment.JournalEvolutionPart object at 0x7f5c55fbecf8> publisher = <wcs.compat.CompatWcsPublisher object at 0x7f5c59ae8c88> subfield_rowdata = 'CARTE'
Ça vient de #46431 et c'est parce que le parcours des champs où on cherche des fichiers passe aussi par formdata.workflow_data qui peut contenir n'importe quoi, par exemple ici un résultat d'appel webservice avec un "data".
Il faut aller un peu plus loin : vérifier que field_data.get('data') est une liste de dictionnaires.
Fichiers
Révisions associées
Historique
Mis à jour par Thomas Noël il y a plus de 3 ans
- Fichier 0001-misc-refine-file-search-in-blocks-when-looking-for-u.patch 0001-misc-refine-file-search-in-blocks-when-looking-for-u.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Serghei Mihai il y a plus de 3 ans
question de style: pourquoi pas?
if not isinstance(subfield_rowdata, dict): continue for block_field_data in subfield_rowdata.values(): ...
Mis à jour par Thomas Noël il y a plus de 3 ans
Serghei Mihai a écrit :
question de style: pourquoi pas?
[...]
Parce que ça fait deux lignes au lieu d'une ? ;)
Blague à part, faire un if:continue c'est intéressant avant un grand nombre de lignes qu'on ne veut pas indenter. Ici il y en a juste trois, donc je préfère programmer correctement. Mais je suis vieux.
Mis à jour par Serghei Mihai il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
- Assigné à mis à Thomas Noël
Go.
Mis à jour par Thomas Noël il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit f4886f5b0a2cf7ac2907c24688d1d5ee1dd8f2df Author: Thomas NOEL <tnoel@entrouvert.com> Date: Thu Sep 24 10:08:22 2020 +0200 misc: refine file search in blocks when looking for unused files (#46937)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: refine file search in blocks when looking for unused files (#46937)