Bug #34020
KeyError sur self.formdef.data_class().get(draft_formdata_id)
Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
15 juin 2019
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Oui
Planning:
Non
Description
Sur un formulaire avec code de suivi, en mode anonyme, mais pas sur la première page. Je n'ai pas réssui à reproduire, mais on a eu des traces de ce genre:
KeyError at /papiers-citoyennete/demande-d-un-acte-de-mariage/ No exception message supplied Request Method: POST Request URL: https://demarches.nancy.fr/papiers-citoyennete/demande-d-un-acte-de-mariage/ Django Version: 1.11.20 Python Executable: /usr/bin/uwsgi-core Python Version: 2.7.13 Traceback: File "/usr/lib/python2.7/dist-packages/django/core/handlers/exception.py" in inner 41. response = get_response(request) File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _legacy_get_response 249. response = self._get_response(request) File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request) File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python2.7/dist-packages/wcs/compat.py" in quixote 245. return pub.process_request(pub.get_request()) File "/usr/lib/python2.7/dist-packages/wcs/compat.py" in process_request 210. output = self.filter_output(request, output) File "/usr/lib/python2.7/dist-packages/wcs/compat.py" in filter_output 175. template_response) File "/usr/lib/python2.7/dist-packages/wcs/compat.py" in render_template 183. template_context=template_response.context) File "/usr/lib/python2.7/dist-packages/auquotidien/modules/template.py" in get_decorate_vars 16. template_context['form_side'] = template_context['form_side']() File "/usr/lib/python2.7/dist-packages/wcs/forms/root.py" in <lambda> 412. 'form_side': lambda: self.form_side(0, page, data=data, magictoken=magictoken), File "/usr/lib/python2.7/dist-packages/auquotidien/modules/formpage.py" in form_side 22. form_side_html = OldFormPage.form_side(self, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/wcs/forms/root.py" in form_side 431. r += self.tracking_code_box(data, magictoken) File "/usr/lib/python2.7/dist-packages/wcs/forms/root.py" in tracking_code_box 448. formdata = self.formdef.data_class().get(draft_formdata_id) File "/usr/lib/python2.7/dist-packages/wcs/sql.py" in f 348. return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/wcs/sql.py" in get 1531. raise KeyError() Exception Type: KeyError at /papiers-citoyennete/demande-d-un-acte-de-mariage/ Request information: USER: [unable to retrieve the current user] GET: No GET data POST: magictoken = u'xxxxxx' _ajax_form_token = u'xxxxxxxxxx' f21 = u'1' submit = u'Suivant' f23 = u'Autre' step = u'0' f20 = u'EXTRAIT-AVEC-FILIATION' f26 = u'' f24 = u'BELLE-SOEUR' page_id = u'18' page = u'1' FILES: No FILES data COOKIES: wcs-3326ea = u'xxxxxxx'
Donc on a un KeyError lors de l'affichage du code suivi, au niveau de wcs/forms/root.py
def tracking_code_box(self, data, magictoken): '''Create the tracking code box, it displays the current tracking code if enabled, and a 'remove draft' button if the current form is a draft that has been recalled.''' r = TemplateIO(html=True) if self.formdef.enable_tracking_codes: r += htmltext('<div class="tracking-code-part">') r += htmltext('<h3>%s</h3>') % _('Tracking code') tracking_code = None draft_formdata_id = data.get('draft_formdata_id') if draft_formdata_id: formdata = self.formdef.data_class().get(draft_formdata_id) <----- ici, KeyError tracking_code = formdata.tracking_code else: tracking_code = data.get('future_tracking_code')
le self.formdef.data_class().get(draft_formdata_id) ne semble pas exister.
Ce qui n'a pas vraiment de sens pour moi (ça me semble impossible).
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 5 ans
- Fichier 0001-forms-don-t-crash-on-suddently-missing-draft-34020.patch 0001-forms-don-t-crash-on-suddently-missing-draft-34020.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
C'est arrivé une dizaine de fois ce week-end, ce qui est quand même nouveau (et peut-être dû à la nouvelle release et les patches autour de abandonner/annuler, dunno).
Mais soit, j'ai toujours pas d'idée, cachons le soucis.
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit ccce3fba1e37732f761bf555d069e463312a8b59 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Jun 16 20:54:35 2019 +0200 forms: don't crash on suddently missing draft (#34020)
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
forms: don't crash on suddently missing draft (#34020)