https://dev.entrouvert.org/https://dev.entrouvert.org/favicon.ico?15861920342020-09-16T12:50:23ZRedmine Entr’ouvertw.c.s. - Bug #46694: Erreur de rendu, gabarit apparemment manquant ('NoneType' object has no attribute 'get_exception_info')https://dev.entrouvert.org/issues/46694?journal_id=2584012020-09-16T12:50:23ZPaul Marillonnet
<ul><li><strong>Fichier</strong> <a href="/attachments/47837">0001-form-use-correct-widget-control-content-template-blo.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/47837/0001-form-use-correct-widget-control-content-template-blo.patch">0001-form-use-correct-widget-control-content-template-blo.patch</a> ajouté</li><li><strong>Statut</strong> changé de <i>Nouveau</i> à <i>Solution proposée</i></li><li><strong>Patch proposed</strong> changé de <i>Non</i> à <i>Oui</i></li></ul><p>Je pense que c'est ça. Je vais tester.</p> w.c.s. - Bug #46694: Erreur de rendu, gabarit apparemment manquant ('NoneType' object has no attribute 'get_exception_info')https://dev.entrouvert.org/issues/46694?journal_id=2584202020-09-16T13:14:03ZPaul Marillonnet
<ul></ul><p>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.<br />Étrange cette affaire.</p> w.c.s. - Bug #46694: Erreur de rendu, gabarit apparemment manquant ('NoneType' object has no attribute 'get_exception_info')https://dev.entrouvert.org/issues/46694?journal_id=2584552020-09-16T14:42:15ZPaul Marillonnet
<ul></ul><p>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).</p> w.c.s. - Bug #46694: Erreur de rendu, gabarit apparemment manquant ('NoneType' object has no attribute 'get_exception_info')https://dev.entrouvert.org/issues/46694?journal_id=2584792020-09-16T15:20:18ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>Vraiment pas partant pour taper ça, surtout sans possibilité de <br />reproduire; il faudrait alors creuser l'origine de widget-control, qui <br />doit exister pour une raison, etc. trop de risques sans ça de casser un <br />usage.</p> w.c.s. - Bug #46694: Erreur de rendu, gabarit apparemment manquant ('NoneType' object has no attribute 'get_exception_info')https://dev.entrouvert.org/issues/46694?journal_id=2584852020-09-16T15:30:40ZPaul Marillonnet
<ul><li><strong>Statut</strong> changé de <i>Solution proposée</i> à <i>En cours</i></li></ul><p>Frédéric Péters a écrit :</p>
<blockquote>
<p>Vraiment pas partant pour taper ça, surtout sans possibilité de <br />reproduire; il faudrait alors creuser l'origine de widget-control, qui <br />doit exister pour une raison, etc. trop de risques sans ça de casser un <br />usage.</p>
</blockquote>
<p>Sûr. Pas question de taper ça sans pouvoir reproduire.</p> w.c.s. - Bug #46694: Erreur de rendu, gabarit apparemment manquant ('NoneType' object has no attribute 'get_exception_info')https://dev.entrouvert.org/issues/46694?journal_id=2584882020-09-16T15:41:21ZPaul Marillonnet
<ul></ul><p>Et, pour tout dire, je creuse cette piste parce que la docstring de <code>render_widget_content</code> affirme que ça rend le <pre> widget content (without label, hint, etc.)</pre> tout en utilisant le bloc <code>widget-content</code>, alors que dans le gabarit de base de rendu de widget (étendu par le gabarit de rendu de champ carte, lequel surcharge le bloc <code>widget-control</code>) le bloc <code>widget-content</code> contient ces informations prétendument exclues :<br /><pre><code> {% 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 %}
</code></pre></p> w.c.s. - Bug #46694: Erreur de rendu, gabarit apparemment manquant ('NoneType' object has no attribute 'get_exception_info')https://dev.entrouvert.org/issues/46694?journal_id=2585202020-09-16T20:35:14ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>Pour reprendre, le tableau de traitement mais aussi une demande particulière <a class="external" href="https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/">https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/</a> , mais aussi la vue inspect de celle-ci, <a class="external" href="https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/inspect">https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/inspect</a>, avec cette trace :</p>
<pre>
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>}
</pre>
<p>Si on regarde la demande,</p>
<pre>
>>> 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'}
</pre>
<p>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.</p>
<pre>
>>> for carddata in carddef.data_class().select():
... if carddata.data['1'] and 'form_var' in carddata.data['1']:
... carddata.data['1'] = ''
... carddata.store()
...
</pre>
<p>Et voilà.</p>
<p>Il faudrait vérifier avec Stéphane la manière dont les fiches ont été créées.</p>
<p>Inutile par contre d'essayer d'empêcher le bug, il y a <a class="issue tracker-2 status-2 priority-4 priority-default" title="Development: stocker les champs carte dans un dictionnaire (En cours)" href="https://dev.entrouvert.org/issues/46617">#46617</a> qui vient changer le stockage pour les champs carte.</p> w.c.s. - Bug #46694: Erreur de rendu, gabarit apparemment manquant ('NoneType' object has no attribute 'get_exception_info')https://dev.entrouvert.org/issues/46694?journal_id=2587582020-09-17T13:50:21ZPaul Marillonnet
<ul><li><strong>Statut</strong> changé de <i>En cours</i> à <i>Rejeté</i></li></ul><p>Frédéric Péters a écrit :</p>
<blockquote>
<p>Pour reprendre, le tableau de traitement mais aussi une demande particulière <a class="external" href="https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/">https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/</a> , mais aussi la vue inspect de celle-ci, <a class="external" href="https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/inspect">https://demarches-sguiet.test.entrouvert.org/backoffice/data/catalogue-des-tags/5/inspect</a>, avec cette trace :</p>
<p>[...]</p>
<p>Si on regarde la demande,</p>
<p>[...]</p>
<p>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.</p>
<p>[...]</p>
<p>Et voilà.</p>
<p>Il faudrait vérifier avec Stéphane la manière dont les fiches ont été créées.</p>
<p>Inutile par contre d'essayer d'empêcher le bug, il y a <a class="issue tracker-2 status-2 priority-4 priority-default" title="Development: stocker les champs carte dans un dictionnaire (En cours)" href="https://dev.entrouvert.org/issues/46617">#46617</a> qui vient changer le stockage pour les champs carte.</p>
</blockquote>
<p>Ok, merci pour le fin mot de l'histoire. Je rejette le ticket.</p>