Bug #85258
rendu de submission_lateral_template : demander à avoir une exception en cas de plantage du rendu du gabarit
0%
Description
Actuellement dans FormDef:;get_submission_lateral_block on a cette méthode de rendu :
try: new_value = Template(self.submission_lateral_template, autoescape=False).render(context) except Exception as e: get_publisher().record_error(...) return None return new_value
mais on oublie d'ajouter un raises=True dans l'objet Template, et donc ça ne lève jamais d'exception ; et pire, quand ça plante le render(context) renvoie le gabarit tel quel, qui se retrouve affiché à l'agent.
Révisions associées
backoffice: handle django errors in submission lateral template (#85258)
Historique
Mis à jour par Frédéric Péters il y a 4 mois
donc ça ne lève jamais d'exception
Et pourtant le coverage indique bien que cette ligne est couverte : https://jenkins.entrouvert.org/job/gitea/job/wcs/job/main/Coverage_20Report_20_28native_29/d_4006139f780a0235_formdef_py.html#t790
Tu pourrais donner un exemple de gabarit reproduisant ton cas ?
Mis à jour par Thomas Noël il y a 4 mois
C'était un template avec :
<ul><!--{% for rdv in forms|objects:"rendez-vous-travailleurs-sociaux"|filter_by:"agent"|filter_value:form_submission_agent_display_name|filter_by:"rdv_datetime"|greater_than_or_equal|filter_value:now|filter_by_status:"Rendez-vous confirmé"|order_by:"form_number_raw" %}--> <li><!-- {% with date=rdv|get:"event" type=rdv|get:"eplanning" %}-->{{date}} ({{type}})<!--- {% endwith %}----></li> <!--{% endfor %}--> </ul>
où l'erreur venait, a priori, de form_submission_agent_display_name qui n'existe pas (ticket #85257 mais c'est autre chose).
Et donc variable inconnue, plantage silencieux du render() qui prend en charge l'exception DjangoVariableDoesNotExist, cf wcs/qommon/template.py :
try: rendered = self.template.render(context) except (DjangoTemplateSyntaxError, DjangoVariableDoesNotExist) as e: if self.raises: from . import _ raise TemplateError(_('failure to render Django template: %s'), e) return self.value
et donc le return self.value qui donne le gabarit renvoyé tel quel...
Notre test joue avec XX{{today|list}}XX
qui est un crash Python bas niveau ('datetime.date' object is not iterable) qui fait crasher le render systématiquement.
(Disclamation: je n'ai pas pris le temps de faire autre chose que des tests dans ma tête, je me trompe peut-être d'analyse)
Mis à jour par Robot Gitea il y a 4 mois
- Statut changé de Nouveau à En cours
- Assigné à mis à Frédéric Péters
Frédéric Péters (fpeters) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/1000
- Titre : WIP: backoffice: handle django errors in submission lateral template (#85258)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/1000/files
Mis à jour par Robot Gitea il y a 3 mois
- Statut changé de Solution proposée à Solution validée
Lauréline Guérin (lguerin) a approuvé une pull request sur Gitea concernant cette demande :
Mis à jour par Robot Gitea il y a 3 mois
- Statut changé de Solution validée à Résolu (à déployer)
Frédéric Péters (fpeters) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/1000
- Titre : backoffice: handle django errors in submission lateral template (#85258)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/1000/files
Mis à jour par Transition automatique il y a 3 mois
- Statut changé de Résolu (à déployer) à Solution déployée
misc: give a specific message for missing variables in templates (#85258)