Bug #46694
Erreur de rendu, gabarit apparemment manquant ('NoneType' object has no attribute 'get_exception_info')
0%
Description
Sur https://demarches-sguiet.test.entrouvert.org/backoffice/data/ -> Fiche "Catalogue Tags" -> "Internal Server Error"
Fichiers
Historique
Mis à jour par Paul Marillonnet il y a plus de 3 ans
- Fichier 0001-form-use-correct-widget-control-content-template-blo.patch 0001-form-use-correct-widget-control-content-template-blo.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Je pense que c'est ça. Je vais tester.
Mis à jour par Paul Marillonnet il y a plus de 3 ans
Je ne reproduis pas, même après import du formulaire, du wf et du modèle de fiche (depuis l'instance posant problème), et déroulement d'une ou deux démarches de signalement qui mènent à la création de fiches.
Étrange cette affaire.
Mis à jour par Paul Marillonnet il y a plus de 3 ans
Désactiver l'affichage du champ dans les tableaux de résumé met fin à ce plantage (le tableau mentionné dans la description est maintenant accessible).
Mis à jour par Frédéric Péters il y a plus de 3 ans
Vraiment pas partant pour taper ça, surtout sans possibilité de
reproduire; il faudrait alors creuser l'origine de widget-control, qui
doit exister pour une raison, etc. trop de risques sans ça de casser un
usage.
Mis à jour par Paul Marillonnet il y a plus de 3 ans
- Statut changé de Solution proposée à En cours
Frédéric Péters a écrit :
Vraiment pas partant pour taper ça, surtout sans possibilité de
reproduire; il faudrait alors creuser l'origine de widget-control, qui
doit exister pour une raison, etc. trop de risques sans ça de casser un
usage.
Sûr. Pas question de taper ça sans pouvoir reproduire.
Mis à jour par Paul Marillonnet il y a plus de 3 ans
Et, pour tout dire, je creuse cette piste parce que la docstring de render_widget_content
affirme que ça rend le
widget content (without label, hint, etc.)tout en utilisant le bloc
widget-content
, alors que dans le gabarit de base de rendu de widget (étendu par le gabarit de rendu de champ carte, lequel surcharge le bloc widget-control
) le bloc widget-content
contient ces informations prétendument exclues : {% block widget-content %}
<div class="content {{widget.content.content_extra_css_class}}"
aria-labelledby="form_label_{{widget.name}}"
{% for attr, value in widget.content_extra_attributes.items %}
{{attr}}="{{value}}"
{% endfor %}
>
{% block widget-error %}{{widget.rendered_error}}{% endblock %}
{% block widget-control %}{{widget.render_content|safe}}{% endblock %}
{% block widget-hint %}{{widget.rendered_hint}}{% endblock %}
</div>
{% endblock %}
Mis à jour par Frédéric Péters il y a plus de 3 ans
Pour reprendre, le tableau de traitement mais aussi une demande particulière https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/ , mais aussi la vue inspect de celle-ci, https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/inspect, avec cette trace :
Exception: type = '<class 'KeyError'>', value = ''form_var_lieu_lat'' Stack trace (most recent call first): File "/usr/lib/python3/dist-packages/wcs/qommon/substitution.py", line 214, in __getitem__ 212 # TypeError will happen if indexing is used on a string 213 if i == 1: > 214 raise KeyError(key) 215 else: 216 parts = parts[i:] locals: __class__ = <class 'wcs.qommon.substitution.CompatibilityNamesDict'> current_dict = <wcs.variables.LazyFieldVarMap object at 0x7f37c0579b70> i = 1 key = 'form_var_lieu_lat' part = 'lat' parts = ['lat'] self = {'form': <wcs.variables.LazyFormData object at 0x7f37c05e2a58>, 'attachments': <wcs.workflows.AttachmentsSubstitutionProxy object at 0x7f37c05e2e80>}
Si on regarde la demande,
>>> carddef = CardDef.get(8) >>> carddata = carddef.data_class().get(5) >>> [x for x in carddef.fields] [<MapField 1 'Lieu'>, <ItemField 2 'Intérêt'>] >>> carddata.data {'1': 'form_var_lieu', '2': 'form_var_interet', '2_display': 'form_var_interet'}
Et de là mon idée est que les fiches ont été créées en important un CSV et que ça autorise n'importe quoi à aller dans un champ carte.
>>> for carddata in carddef.data_class().select(): ... if carddata.data['1'] and 'form_var' in carddata.data['1']: ... carddata.data['1'] = '' ... carddata.store() ...
Et voilà.
Il faudrait vérifier avec Stéphane la manière dont les fiches ont été créées.
Inutile par contre d'essayer d'empêcher le bug, il y a #46617 qui vient changer le stockage pour les champs carte.
Mis à jour par Paul Marillonnet il y a plus de 3 ans
- Statut changé de En cours à Rejeté
Frédéric Péters a écrit :
Pour reprendre, le tableau de traitement mais aussi une demande particulière https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/ , mais aussi la vue inspect de celle-ci, https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/inspect, avec cette trace :
[...]
Si on regarde la demande,
[...]
Et de là mon idée est que les fiches ont été créées en important un CSV et que ça autorise n'importe quoi à aller dans un champ carte.
[...]
Et voilà.
Il faudrait vérifier avec Stéphane la manière dont les fiches ont été créées.
Inutile par contre d'essayer d'empêcher le bug, il y a #46617 qui vient changer le stockage pour les champs carte.
Ok, merci pour le fin mot de l'histoire. Je rejette le ticket.