Bug #56764
gestion des erreurs de gabarit de résumé
0%
Description
Un gabarit sur une vue qui est {{ form_var_service_instructeur|list }} mais ça plante,
Attraper/enregistrer l'erreur et mettre "ERREUR" comme résultat de gabarit ?
Exception: type = '<class 'TypeError'>', value = ''NoneType' object is not iterable' Stack trace (most recent call first): File "/usr/lib/python3/dist-packages/wcs/qommon/templatetags/qommon.py", line 841, in list_ 839 def list_(value): 840 # turn a generator into a list > 841 return list(unlazy(value)) 842 843 locals: value = None [...] File "/usr/lib/python3/dist-packages/django/template/backends/django.py", line 63, in render 61 return self.template.render(context) 62 except TemplateDoesNotExist as exc: > 63 reraise(exc, self.backend) 64 65 locals: context = [{'True': True, 'False': False, 'None': None}, {'form': <wcs.variables.LazyFormData object at 0x7f305513cda0>, 'attachments': <wcs.workflows.AttachmentsSubstitutionProxy object at 0x7f305513c860>, 'category_name': 'Signalement', 'category_id': 'signalement', 'category_slug': 'signalement', 'category_description': None, 'formdef_id': '11'}] request = None self = <django.template.backends.django.Template object at 0x7f3054fc85f8> File "/usr/lib/python3/dist-packages/wcs/qommon/template.py", line 515, in django_render 513 514 raise TemplateError(_('failure to render Django template: %s'), e) > 515 return self.value 516 rendered = str(rendered) 517 if context.get('allow_complex'): locals: context = {'form': <wcs.variables.LazyFormData object at 0x7f305513cda0>, 'attachments': <wcs.workflows.AttachmentsSubstitutionProxy object at 0x7f305513c860>, 'category_name': 'Signalement', 'category_id': 'signalement', 'category_slug': 'signalement', 'category_description': None, 'formdef_id': '11'} self = <wcs.qommon.template.Template object at 0x7f3054fc82b0> File "/usr/lib/python3/dist-packages/wcs/formdata.py", line 469, in set_auto_fields 467 new_value = None 468 else: > 469 new_value = Template(template, autoescape=False).render(context) 470 if attribute.startswith('template:'): 471 key = attribute[9:] locals: args = () attribute = 'template:custom-view:liste-service-instructeur-avec-list' changed = True context = {'form': <wcs.variables.LazyFormData object at 0x7f305513cda0>, 'attachments': <wcs.workflows.AttachmentsSubstitutionProxy object at 0x7f305513c860>, 'category_name': 'Signalement', 'category_id': 'signalement', 'category_slug': 'signalement', 'category_description': None, 'formdef_id': '11'} digests = {'default': '...', 'custom-view:liste-prestataire-2': '{{ form_var_service_instructeur|unique }}', 'custom-view:liste-prestataire-3': '...', 'custom-view:liste-prestataire-service-instructeur': '...'} field = <StringField 4 'Service instructeur'> field_name_values = ['_first_name', '_last_name'] fields = {'template:default': '{{ form_var_prestataire }} - {{form_var_courriel_prestataire}}', 'template:custom-view:liste-prestataire-2': '{{ form_var_service_instructeur|unique }}', 'template:custom-view:liste-prestataire-3': '{{ form_var_prestataire }} - {{form_var_courriel_prestataire}}', 'template:custom-view:liste-prestataire-service-instructeur': '{{ form_var_prestataire }} - {{form_var_courriel_prestataire|default:""}}', 'template:custom-view:liste-service-instructeur-avec-list': '{{ form_var_service_instructeur|list }}', 'template:custom-view:liste-service-instructeur-avec-unique': '{{ form_var_service_instructeur=="Service Voirie Maintenance Responsable" }}'} form_user_data = {} key = 'custom-view:liste-prestataire-service-instructeur' kwargs = {} new_value = '...' self = <_wcs_Signalement-Prestataire 'Signalement Prestataire - n°11-1' id:1> template = '{{ form_var_service_instructeur|list }}' user_label = '' users_cfg = ... value = '{{ form_var_service_instructeur=="Service Voirie Maintenance Responsable" }}' File "/usr/lib/python3/dist-packages/wcs/sql.py", line 1986, in _set_auto_fields 1984 @guard_postgres 1985 def _set_auto_fields(self, cur): > 1986 if self.set_auto_fields(): 1987 sql_statement = ( 1988 '''UPDATE %s locals: cur = <cursor object at 0x7f3055208428; closed: 0> self = <_wcs_Signalement-Prestataire 'Signalement Prestataire - n°11-1' id:1>
Fichiers
Révisions associées
Historique
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Fichier 0001-formdata-don-t-fail-on-digest-template-generation-56.patch 0001-formdata-don-t-fail-on-digest-template-generation-56.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a plus de 2 ans
Code ok, mais je me pose la question de l'erreur enregistrée : 'Could not render template'. Je pense qu'elle manque de contexte, on ne sait pas quel gabarit a cassé. Est-ce que ça serait pertinent/possible de dire quelque chose de plus qui aidera à savoir ? (aussi pour éviter que tous les gabarits finissent dans même record_error)
Mis à jour par Lauréline Guérin il y a plus de 2 ans
Mis à jour par Thomas Noël il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Ca roule.
Éventuellement tu pourrais mettre de l'i18n sur « new_value = 'ERROR' » ? Ceci afin qu'on n'affiche bien « ERREUR » pour des fiches qui seraient vues par des utilisateurs vite effrayés par l'anglais (à raison, hein).
Mis à jour par Lauréline Guérin il y a plus de 2 ans
Ben, au moment où le digest est calculé et stocké, c'est quoi la locale ? :)
Mis à jour par Thomas Noël il y a plus de 2 ans
Lauréline Guerin a écrit :
Ben, au moment où le digest est calculé et stocké, c'est quoi la locale ? :)
J'ai renoncé à chercher mais souvent je vois que c'est magique et tout lazy de partout, en général ça marche, ne me demande pas comment parfois moi même je. Mais si tu penses que vraiment ça ne marchera pas, laisse tomber. On cherchera à corriger quand quelqu'un criera en voyant "ERROR".
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit d2c6f15f06eb735bdcdfef880260747f45686788 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Fri Sep 10 11:40:05 2021 +0200 formdata: don't fail on digest template generation (#56764)
J'ai laissé tel quel: avec i18n ça foire au moment du store de l'objet en mode pickle, et je sais pas trop pourquoi
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
formdata: don't fail on digest template generation (#56764)